threads / discuss / 9040

Exporting a tree from a repository

Subject: Exporting a tree from a repository

## tl;dr

6 messages between Jul 14, 2007 and Jul 15, 2007.

replies: 5people: 5as markdown or json

Ciprian Dorin Craciun· Jul 14, 2007, 20:25 UTC · lore
    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· Jul 14, 2007, 21:46 UTC · re: Ciprian Dorin Craciun · lore

Re: Exporting a tree from a repository

On Sat, 14 Jul 2007, Ciprian Dorin Craciun wrote:
Show 16 quoted lines
>   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· Jul 15, 2007, 06:12 UTC · re: Julian Phillips · lore

Re: Exporting a tree from a repository

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· Jul 15, 2007, 07:12 UTC · re: Julian Phillips · lore

Re: Exporting a tree from a repository

On 7/15/07, Julian Phillips <julian@quantumfyre.co.uk> wrote:
Show 34 quoted lines
> 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.
Alex Riesen· Jul 15, 2007, 09:15 UTC · re: Ciprian Dorin Craciun · lore

Re: Exporting a tree from a repository

Ciprian Dorin Craciun, Sun, Jul 15, 2007 09:12:08 +0200:
Show 5 quoted lines
>    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).
martin f krafft· Jul 15, 2007, 07:17 UTC · re: Ciprian Dorin Craciun · lore

Re: Exporting a tree from a repository

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

← back to recent threads