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

git-subtree: directory mismatch

From
MFMarc Fournier <marc.fournier@camptocamp.com>
Date
Nov 24, 2009, 19:53 UTC
Message-ID
<20091124195353.GA16627@lonquimay.wrk.lsn.camptocamp.com>
Hi,

I've come across this weird behaviour using git-subtree: when updating a directory created by git-subtree, the content of some (almost) random neighbour directory gets replaced, instead of the directory specified by "git-subtree --prefix".

mkdir /tmp/testrepo cd /tmp/testrepo git init . mkdir -p modules/cognac/{manifests,files} mkdir -p modules/cognac/manifests/{classes,definitions} touch modules/cognac/README modules/cognac/manifests/classes/foo.pp modules/cognac/manifests/definitions/bar.pp modules/cognac/files/blabla git add modules/ git commit -m "test"

git remote add mapserver git://github.com/camptocamp/puppet-mapserver.git git remote update git-subtree add --prefix modules/mapserver 97f5985b # an older commit

# So far so good, I have 2 subdirectories in modules/ with completely # different content.

# Then, the content of modules/cognac/ gets completely replaced by the # content of HEAD from git://github.com/camptocamp/puppet-mapserver.git. # modules/mapserver still contains the content of commit 97f5985b.

git-subtree pull --prefix modules/mapserver mapserver master
>From git://github.com/camptocamp/puppet-mapserver
 * branch            master     -> FETCH_HEAD
Removing modules/cognac/files/blabla
Removing modules/cognac/manifests/classes/foo.pp
Removing modules/cognac/manifests/definitions/bar.pp
Merge made by subtree.
 modules/cognac/files/apt-preferences               |    3 +
 modules/cognac/files/epsg.C2C                      | 5445 ++++++++++++++++++++
 modules/cognac/files/epsg.legacy                   | 5445 ++++++++++++++++++++
 modules/cognac/files/epsg.minimal                  |   14 +
 modules/cognac/files/etc/apt/preferences-20070910  |    3 +
 modules/cognac/files/etc/apt/preferences-20080225  |   35 +
 modules/cognac/files/etc/apt/preferences-v5-2      |   35 +
 modules/cognac/manifests/classes/epsg.pp           |   21 +
 .../cognac/manifests/classes/mapserver-debian.pp   |   82 +
 modules/cognac/manifests/classes/v5.pp             |   46 +
 modules/cognac/manifests/init.pp                   |    8 +
 11 files changed, 11137 insertions(+), 0 deletions(-)
 create mode 100644 modules/cognac/files/apt-preferences
 delete mode 100644 modules/cognac/files/blabla
 create mode 100755 modules/cognac/files/epsg.C2C
 create mode 100755 modules/cognac/files/epsg.legacy
 create mode 100644 modules/cognac/files/epsg.minimal
 create mode 100644 modules/cognac/files/etc/apt/preferences-20070910
 create mode 100644 modules/cognac/files/etc/apt/preferences-20080225
 create mode 100644 modules/cognac/files/etc/apt/preferences-v5-2
 create mode 100644 modules/cognac/manifests/classes/epsg.pp
 delete mode 100644 modules/cognac/manifests/classes/foo.pp
 create mode 100644 modules/cognac/manifests/classes/mapserver-debian.pp
 create mode 100644 modules/cognac/manifests/classes/v5.pp
 delete mode 100644 modules/cognac/manifests/definitions/bar.pp
 create mode 100644 modules/cognac/manifests/init.pp
I was not able to reproduce this bug in any of the following cases:
 - if the README file wasn't empty
 - if modules/cognac is renamed to something else
 - if modules/cognac doesn't have the same sub-directories than
   modules/mapserver

This bug happens using git 1.5.5.6 as well as 1.6.5. It seems to happen when git-subtree calls "git merge -s subtree".

Maybe something is broken in this puppet-mapserver.git repository I use ? I've encountered the same problem with other directories too.

Any idea ?

Thanks ! Marc

Next: Avery Pennarun
Message 1 of 12 in “git-subtree: directory mismatch”
  1. Marc FournierNov 24, 2009
  2. Avery PennarunNov 24, 2009
  3. Nanako ShiraishiNov 24, 2009
  4. Avery PennarunNov 25, 2009
  5. Junio C HamanoNov 25, 2009
  6. Avery PennarunNov 25, 2009
  7. Junio C HamanoNov 25, 2009
  8. Johannes SchindelinNov 25, 2009
  9. Avery PennarunNov 25, 2009
  10. Björn SteinbrinkNov 25, 2009
  11. Avery PennarunNov 25, 2009
  12. Marc FournierNov 25, 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.