git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git subtree: an alternative to git submodule

From
Ping Yin <pkufranky@gmail.com>
Date
May 19, 2009, 14:27 UTC
Message-ID
<46dff0320905190727m77a582c1j5ddc161230cc4a83@mail.gmail.com>
In-Reply-To
<32541b130905180938v5dd5283g6b75ffb7e76f3280@mail.gmail.com>
On Tue, May 19, 2009 at 12:38 AM, Avery Pennarun <apenwarr@gmail.com> wrote:
Show 23 quoted lines
> On Mon, May 18, 2009 at 11:55 AM, Ping Yin <pkufranky@gmail.com> wrote:
>> It's really a cool feature, but i havn't tried it. Why?
>>
>> It will spends me some time saving and applying the patches and then
>> testing it (i don't have the appropriate environment setuped). But I
>> am busy and there is no urgent need to use this feature ( it is only a
>> rare case for me).  So i will wait until i need the feature or there
>> is an easy to fetch the code ( pu of official reposotory or other
>> repository with these patches applied).
>
> Excellent, thanks for the feedback.  In fact you can git clone the
> code from here:
>
>  git clone git://github.com/apenwarr/git-subtree.git
>
> (It's not a copy of the git repo; it's a tiny standalone repo.)
>
> The important file is 'git-subtree'.  Copy this anywhere on your PATH,
> and magically the 'git subtree' command will work.
>
> I admit that your next roadblock will probably be lack of
> documentation, though, as Junio points out.
>
Some problems after trying.
* "split" generates a commit hash which i take some time to figure out
the meaning. May it should accept one more argument (repository name)
to generate the repository directly?
* "pull" creates the merged files to the wrong directory. Following is
the output

git subtree -d pull --prefix=foo git@example.com:foo.git master command: {pull} quiet: {} revs: {} dir: {foo} opts: {git@example.com:foo.git master}

+ git pull -s subtree git@example.com:foo.git master
From example.com:foo
 * branch            master     -> FETCH_HEAD
Merge made by subtree.
 scripts/data.example/creatives/1.swf     |  Bin 0 -> 174109 bytes
 scripts/data.example/creatives/2.swf      |  Bin 0 -> 103622 bytes
 scripts/data.example/creatives/3.swf |  Bin 0 -> 35347 bytes
 scripts/data.example/creatives/4.swf  |  Bin 0 -> 16300 bytes
 5 files changed, 0 insertions(+), 0 deletions(-)
...
* "merge" doesn't respect the prefix option. With the following
commands, foo.txt is not merged to subdir foo/

touch foo.txt && git add foo.txt && git commit -m "add foo.txt" git branch foo && git reset --hard HEAD^ git subtree merge --prefix=foo foo

Previous: Avery PennarunNext: Jakub Narebski
Message 10 of 11 in “git subtree: an alternative to git submodule”
  1. 0/2 git subtree: an alternative to git submoduleAvery Pennarun, May 8, 2009
  2. 1/2 Add 'git subtree' command for tracking history of subtrees separately.Avery Pennarun, May 8, 2009
  3. 2/2 Automated test script for 'git subtree'.Avery Pennarun, May 8, 2009
  4. Avery PennarunMay 15, 2009
  5. Junio C HamanoMay 15, 2009
  6. Avery PennarunMay 15, 2009
  7. Ping YinMay 18, 2009
  8. Ping YinMay 18, 2009
  9. Avery PennarunMay 18, 2009
  10. Ping YinMay 19, 2009
  11. Jakub NarebskiMay 19, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.