subtree bug: removing and re-adding a subtree screws up the push

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Today I realized that when you add a subtree with `git subtree add`,
then remove it with `git rm -r`, then re-add it again, pushing to the
subtree behaves weirdly: it adds the whole history of the main
repository to the sub repository.

Below is a list of commands to reproduce the issue:

```
mkdir myproj
mkdir mylib

cd mylib
touch mylib-file1
git init
git add mylib-file1
git commit -m "mylib initial commit"

cd ../myproj
touch myproj-file1
git init
git add myproj-file1
git commit -m "myproj initial commit"
git subtree add --squash -P contrib/mylib -m "added lib" ../mylib master
git rm -r contrib/mylib
git commit -m "removed lib"
git subtree add --squash -P contrib/mylib -m "re-adding lib" ../mylib master

git subtree push -P contrib/mylib ../mylib test

cd ../mylib
git checkout test
git log | cat
# expected: only "mylib initial commit"
# actual: full history of myproj
```

If you replace the last two occurrences of contrib/mylib by a
different folder such as contrib2/mylib, the push works as usual. I
suspect that subtree splits using the first commit in the subfolder in
the whole history, rather than the first commit after the folder was
last added.

Best regards,
Christian Zommerfelds
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]