Boost logo

Boost :

Subject: Re: [boost] [git] The any library does not pull cleanly because of a forced update on develop and master.
From: Vladimir Prus (ghost_at_[hidden])
Date: 2013-12-10 23:45:43


On 11.12.2013 04:32, Gavin Lambert wrote:

>>> After this change,
>>>
>>> git log file
>>>
>>> will output a single commit. You can kinda fix this by passing --follow,
>>> but you need to do this every time,
>>> there's no documented way to have it as default. Further, gitk does not
>>> appear to handle this at all, it
>>> just shows a single revision (e.g. if run like 'gitk
>>> build/virtual-target.jam').
>>>
>>> Then, printing past becomes inconvenient:
>>>
>>> $ git show
>>> 5a0d9820ac6bd4068a1fa3075d45904ed5341675:build/virtual-target.jam
>>> fatal: Path 'build/virtual-target.jam' exists on disk, but not in
>>> '5a0d9820ac6bd4068a1fa3075d45904ed5341675'
>>>
>>> It is possible to use v2/build/virtual-target.jam in this case, but it's
>>> becoming not funny. And, importantly,
>>> given that a few people said that rename should "just work", which is
>>> demonstrably false, I suspect that there
>>> are further gotchas beyond the above immediate ones.
>>
>> I admit to being a git novice but I am truly shocked that moving a file
>> to another place in a repository through some git command does not keep
>> all of the previous history. Maybe someone who knows git can explain why
>> this is so but it sure seems to me to be a totally erroneous way of
>> treating a move.
>
> AFAICT from discussion above, Git behaves the same as SVN, except that SVN defaults to following moves (and --stop-on-copy disables that)
> and Git defaults to not following moves (and --follow enables that).

That's important usability difference, IMO.

> It's just as painful in SVN to view the contents of a past file through a copy/move/delete, until you get experienced with peg revisions or
> you use an interactive repository browser to view the whole tree as it appeared in the past.

I believe in SVN, you only need to bother with peg revision in order to identify the object you want to work with, in case it
does not exist in current place, or it was a different object with the same name in past. In other cases, SVN will walk the history
just fine. E.g. I just run this in SVN:

     ~/Sources/boost-trunk/tools/build/v2/engine$ svn diff -c18888 jam.c

and got a diff. This is an old revision, the 'engine' directory did not exist back then, and until revision 64010, and the file itself
was moved twice. So, moving files is in fact easier in SVN. (I vaguely believe that in early SVN versions, the above command would
have required peg revision, but it's was long time ago).

- Volodya


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk