# Exporting a tree from a repository

6 messages from 2007-07-14 to 2007-07-15. Participants: Ciprian Dorin Craciun, Julian Phillips, Junio C Hamano, martin f krafft, Alex Riesen.
Thread: https://gitlist.dev/t/9040

## Ciprian Dorin Craciun, 2007-07-14 20:25

Subject: Exporting a tree from a repository
Message-ID: <8e04b5820707141325o400e170bu9eb80b304cae506b@mail.gmail.com>
URL: https://gitlist.dev/e/8e04b5820707141325o400e170bu9eb80b304cae506b%40mail.gmail.com

```
    Hello all!

    I am a new GIT user, I like it, so I started playing with it for
different projects I work on.

    Currently I am playing with "Linux from Scratch", and I have
written some scripts to automatize the build process -- kind of
install scripts...

    For this I use GIT to store all the source packages -- each inside
it's own branch :).

    My question is the following: How can I export an entire tree
without using a working directory, or cloning the repository. (Because
from what I have seen so far there is no way to use the same
repository with many working directories...)

    Now I know that I can use "git archive | tar -x"... I am looking
for the same functionality but without the intermediary file... Maybe
something like "git archive --format=tree <branch>"...

    Also there is also a possible drawback by using git archive with
tar format, that is if I decide to make the repository available to
the public then it would be nice to have this export functionality...
I think this could be also used for kernel sources as an alternative
to downloading the tar.bz2 file or copying the entire tree...

    Thank you all for your feedback!
    Ciprian Craciun.

```

## Julian Phillips, 2007-07-14 21:46

Subject: Re: Exporting a tree from a repository
Message-ID: <Pine.LNX.4.64.0707142237190.13310@beast.quantumfyre.co.uk>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0707142237190.13310%40beast.quantumfyre.co.uk
In-Reply-To: <8e04b5820707141325o400e170bu9eb80b304cae506b@mail.gmail.com>

```
On Sat, 14 Jul 2007, Ciprian Dorin Craciun wrote:

>   Hello all!
>
>   I am a new GIT user, I like it, so I started playing with it for
> different projects I work on.
>
>   Currently I am playing with "Linux from Scratch", and I have
> written some scripts to automatize the build process -- kind of
> install scripts...
>
>   For this I use GIT to store all the source packages -- each inside
> it's own branch :).
>
>   My question is the following: How can I export an entire tree
> without using a working directory, or cloning the repository. (Because
> from what I have seen so far there is no way to use the same
> repository with many working directories...)

You can have as many working directories as you want from one repository 
using the git-new-workdir script from contrib/workdir.  You do need to be 
careful when updating references though (you basically want to avoid 
updating a reference that you are using in another working directory).

You should also be able to use this to get an "export" - simply create the 
new workdir and then remove the .git (being careful not to accidentally do 
this in your actual repository).  However I expect there is a better way 
to do this ...

-- 
Julian

  ---
Quark!  Quark!  Beware the quantum duck!

```

## Junio C Hamano, 2007-07-15 06:12

Subject: Re: Exporting a tree from a repository
Message-ID: <7vy7hidwlf.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vy7hidwlf.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <Pine.LNX.4.64.0707142237190.13310@beast.quantumfyre.co.uk>

```
Julian Phillips <julian@quantumfyre.co.uk> writes:

> You should also be able to use this to get an "export" - simply create
> the new workdir and then remove the .git (being careful not to
> accidentally do this in your actual repository).  However I expect
> there is a better way to do this ...

You meant "git-archive" perhaps.

```

## Ciprian Dorin Craciun, 2007-07-15 07:12

Subject: Re: Exporting a tree from a repository
Message-ID: <8e04b5820707150012r13c5db69g96b97d910dc1b137@mail.gmail.com>
URL: https://gitlist.dev/e/8e04b5820707150012r13c5db69g96b97d910dc1b137%40mail.gmail.com
In-Reply-To: <Pine.LNX.4.64.0707142237190.13310@beast.quantumfyre.co.uk>

```
On 7/15/07, Julian Phillips <julian@quantumfyre.co.uk> wrote:
> On Sat, 14 Jul 2007, Ciprian Dorin Craciun wrote:
>
> >   Hello all!
> >
> >   I am a new GIT user, I like it, so I started playing with it for
> > different projects I work on.
> >
> >   Currently I am playing with "Linux from Scratch", and I have
> > written some scripts to automatize the build process -- kind of
> > install scripts...
> >
> >   For this I use GIT to store all the source packages -- each inside
> > it's own branch :).
> >
> >   My question is the following: How can I export an entire tree
> > without using a working directory, or cloning the repository. (Because
> > from what I have seen so far there is no way to use the same
> > repository with many working directories...)
>
> You can have as many working directories as you want from one repository
> using the git-new-workdir script from contrib/workdir.  You do need to be
> careful when updating references though (you basically want to avoid
> updating a reference that you are using in another working directory).
>
> You should also be able to use this to get an "export" - simply create the
> new workdir and then remove the .git (being careful not to accidentally do
> this in your actual repository).  However I expect there is a better way
> to do this ...
>
> --
> Julian
>
>   ---
> Quark!  Quark!  Beware the quantum duck!


    Thank you for the hint about git-new-workdir! I will try it.

    Now for the export thing... I know that I can just clone the
remote repository and then remove the .git folder, but for my purpose
I just want to have the HEAD tree downloaded, without any history...
And by using git clone I end up downloading much more than I actually
need.

    I am looking for a feature like 'svn export <repo+tree_path>
<destination_path>'...

    Ciprian.

```

## martin f krafft, 2007-07-15 07:17

Subject: Re: Exporting a tree from a repository
Message-ID: <20070715071716.GA22798@piper.oerlikon.madduck.net>
URL: https://gitlist.dev/e/20070715071716.GA22798%40piper.oerlikon.madduck.net
In-Reply-To: <8e04b5820707141325o400e170bu9eb80b304cae506b@mail.gmail.com>

```
also sprach Ciprian Dorin Craciun <ciprian.craciun@gmail.com> [2007.07.14.2225 +0200]:
>    Now I know that I can use "git archive | tar -x"... I am looking
> for the same functionality but without the intermediary file... Maybe
> something like "git archive --format=tree <branch>"...

There is no intermediary file.

-- 
martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck
 
spamtraps: madduck.bogus@madduck.net
 
"when I was a boy I was told
 that anybody could become president.
 now i'm beginning to believe it."
                                                    -- clarence darrow

```

## Alex Riesen, 2007-07-15 09:15

Subject: Re: Exporting a tree from a repository
Message-ID: <20070715091510.GC2568@steel.home>
URL: https://gitlist.dev/e/20070715091510.GC2568%40steel.home
In-Reply-To: <8e04b5820707150012r13c5db69g96b97d910dc1b137@mail.gmail.com>

```
Ciprian Dorin Craciun, Sun, Jul 15, 2007 09:12:08 +0200:
>    Now for the export thing... I know that I can just clone the
> remote repository and then remove the .git folder, but for my purpose
> I just want to have the HEAD tree downloaded, without any history...
> And by using git clone I end up downloading much more than I actually
> need.

Well, if you have a ssh access to remote repository, you can run
git-archive there:

    $ ssh -n 'cd /dir/repo/.git && git --bare archive --prefix=<local-path> <tree>' |tar xf -

or even simplier:

    $ git archive --remote=<remote-host:remote-path> --prefix=<local-path>/ <tree> |tar xf -

(for whatever reason it does not work with just git-daemon).

```
