Re: What's cooking in git.git (topics)
- From
Yaroslav Halchenko <debian@onerussian.com>
- Date
- Dec 13, 2010, 19:09 UTC
- Message-ID
- <loom.20101213T194818-377@post.gmane.org>
- In-Reply-To
- <7vtzen7bul.fsf@gitster.siamese.dyndns.org>
Dear Everyone,
> I tried not to sound too negative when describing -Xours and -Xtheirs > there, but actually I think "-s theirs" is even worse. It is how you > would discard what you did (perhaps because the other side has much better > solution than your hack)
or perhaps this is very well intended, e.g. if you are tracking other project's development and just need to carry a limited portion of the source tree.
Sorry for reincarnating this old thread, but since I have filed Debian wishlist bug against GIT for '-s theirs':
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=581680
and this thread is linked to it as the ultimate source 'why not (yet)', I want to describe a usecase when/why I wanted to have -s theirs:
For debian packaging, we often need to clean up the upstream source tree so it does not contain non-free material (binary blobs, components under non-free licenses, etc). If I want to setup all packaging within GIT, I would follow natively following setup:
git checkout -b dfsg 0.1 git rm non-free-1 non-free-2 ... git commit -m "DFSG-compliant 0.1" git tag -a -m 0.1.dfsg
and base my packaging off dfsg branch (in a separate branch, e.g. debian).
Upon release 0.2 of upstream work, in the simplest case, I can do now
git checkout dfsg git merge 0.2
and there things could get hairy -- if files were modified upstream, I get conflicts, so I would need to git rm files again, and only then commit the merge:
git rm
Moreover, 0.2 might not follow 0.1 -- upstream might release off "release-branches", then I simply *must not* do "git merge" with recursive strategy.
Moreover, if some material finally became free, I would need to re-add it somehow into dfsg branch from 0.2 branch.
*All* those complications could easily be avoided if I only had '-s theirs'. Then I simply
git checkout dfsg git merge --no-commit -s theirs 0.2 # after all I do not, and must not have my modifications git rm -rf non-free-1 ... # probably would be scripted git commit
With -s theirs now I would be able manage all tricky cases above without hassle in a unified way.
Would it be possible to have GIT people reconsider addition of '-s theirs'?
Thank you in advance for your time!