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

Unexpected behavior of git-subtree

From
Steffen Jaeckel <steffen.jaeckel@stzedn.de>
Date
Apr 29, 2013, 17:34 UTC
Message-ID
<1003348467.20130429193427@stzedn.de>
Hi,

lately I used git-subtree to integrate a submodule directly into a repository. Now I wanted to push the changes back to the original repository of the submodule and I was a bit surprised by what happened...

---- snip ----
sjaeckel@T7400-003 /h/projects/my_project (develop)
$ GIT_TRACE=2 git subtree push --prefix=lib/com_lib/ git@git.local:com_lib develop -b develop
trace: exec: 'git-subtree' 'push' '--prefix=lib/com_lib/' 'git@git.local:com_lib' 'develop' '-b' 'develop'
trace: run_command: 'git-subtree' 'push' '--prefix=lib/com_lib/' 'git@git.local:com_lib' 'develop' '-b' 'develop'
trace: built-in: git 'rev-parse' '--parseopt' '--' 'push' '--prefix=lib/com_lib/' 'git@git.local:com_lib' 'develop' '-b' 'develop'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--show-cdup'
git push using:  git@git.local:com_lib develop
trace: exec: 'git-subtree' 'split' '--prefix=lib/com_lib/'
trace: run_command: 'git-subtree' 'split' '--prefix=lib/com_lib/'
trace: built-in: git 'rev-parse' '--parseopt' '--' 'split' '--prefix=lib/com_lib/'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--show-cdup'
trace: built-in: git 'rev-parse' '--default' 'HEAD' '--revs-only'
trace: built-in: git 'rev-parse' '--no-revs' '--no-flags'
trace: built-in: git 'log' '--grep=^git-subtree-dir: lib/com_lib/*$' '--pretty=format:START %H%n%s%n%n%b%nEND%n' '8068a810709f6284b04a18ff38dbb72c36b8d9c6'
trace: built-in: git 'rev-list' '--topo-order' '--reverse' '--parents' '8068a810709f6284b04a18ff38dbb72c36b8d9c6'
trace: built-in: git 'rev-list' '--topo-order' '--reverse' '--parents' '8068a810709f6284b04a18ff38dbb72c36b8d9c6'
1/    102 (0)trace: built-in: git 'ls-tree' 'f6e1457d345029cf4d376ff3cf780cbb8c3080b4' '--' 'lib/com_lib'
..... loads of more git 'ls-tree'...
71/    102 (70)72/    102 (70)trace: built-in: git 'ls-tree' '48dc0efb9a148b1146b013554f8bf4635adf7a0d' '--' 'lib/com_lib'
trace: built-in: git 'log' '-1' '--pretty=format:%T' '6299b48765e11302aca48cc9fca88735aeab7c54' '--'
fatal: bad object 6299b48765e11302aca48cc9fca88735aeab7c54
trace: built-in: git 'push' 'git@git.local:com_lib' ':refs/heads/develop'
trace: run_command: 'ssh' 'git@git.local' 'git-receive-pack '\''com_lib'\'''
Repository name is: com_lib.git
Repository_Clean name is: com_lib
Branch name is: com_lib/develop
To git@git.local:com_lib
 - [deleted]         develop
sjaeckel@T7400-003 /h/projects/my_project (develop)
$ git version
git version 1.8.1.msysgit.1
---- /snip ----

I don't know if that's a bug or I used git-subtree's options incorrect, but what I read from its "manpage" 'git-subtree.txt', I would expect that this command should split out the commits of the prefix and push that to the remote of the former submodule.

Even if it's my fault, because I used it incorrect, I think it should not delete the remote branch.

Besides "git subtree push --prefix=lib/com_lib/ git@git.local:com_lib develop -b develop" I also tried "git subtree push --prefix=lib/com_lib/ git@git.local:com_lib develop" with the same effect.

Can someone tell me if that's a bug, and/or what I did wrong?

Thanks Steffen

Next: John Keeping
Message 1 of 3 in “Unexpected behavior of git-subtree”
  1. Steffen JaeckelApr 29, 2013
  2. John KeepingApr 29, 2013
  3. Steffen JaeckelApr 30, 2013

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.