
Renaming is the killer app of distributed version control (2007) - yungchin
http://www.markshuttleworth.com/archives/123
======
EdwardDiego
Losing a file's history when it's modified _and_ renamed via an IDE or plain
ol' mv (as opposed to _git mv_ ) is one of my biggest pain points with Git -
it tries to detect the renaming, but sufficient content modifications seem to
break its algorithm.

It's a bit of a case of the tail wagging the dog when you find yourself coding
in a certain style to please a version control tool.

~~~
mordocai
I don't really see it is changing coding style to simply have the rename be a
discrete commit. I've never had a problem where it didn't recognize a rename
when I do this. Any further changes I want to make to the file come in
subsequent commits.

~~~
EdwardDiego
> I don't really see it is changing coding style to simply have the rename be
> a discrete commit

Depends on your language, I guess. Changing a Java class name typically
involves renaming a file. So if you're doing a refactor, where renaming a
class may only be one of several changes you're making 'in the flow', you have
to consciously pause after renaming that class and commit.

------
protonfish
That would be nice, but handling of large binaries would be killer as well.

~~~
jordigh
Barring some amazing breakthrough in data compression to the tune of P=NP, I
just don't see how this problem could possibly be solved within the
constraints of the "D" in "DVCS".

The best thing we have now is to centralise large binaries and to use
specialised binary-diffing tools for handling their changes. As discussed in
Lobsters[1], that's more or less how Facebook has handled this particular
problem[2].

[1]
[https://lobste.rs/s/tekiod/unorthodocs_abandon_your_dvcs_and...](https://lobste.rs/s/tekiod/unorthodocs_abandon_your_dvcs_and_return_to_sanity)

[2]
[http://mercurial.selenic.com/wiki/ScaleMercurial#Concern:_La...](http://mercurial.selenic.com/wiki/ScaleMercurial#Concern:_Large_files)

~~~
FeloniousHam
Does git-annex[1] solve the large file problem? I know Gitlab suggested it as
a solution.

[1] [https://git-annex.branchable.com/](https://git-annex.branchable.com/)

~~~
jordigh
It does not solve the large file problem. It only changes the problem
parameters so that a solution exists, by breaking the "D" in "DVCS".

Its interface is kind of ugly, though. I don't know if gitlab gave it a better
interface.

The corresponding extension in Mercurial is largefiles, in case you still
think there is room in the world for a DVCS other than git.

~~~
FeloniousHam
I'm pretty agnostic regarding scm, so long as I have lightweight branching and
lots of tooling built with love.

I only use the basic functionality in git (eg. no submodules, central master
repo), so I wouldn't notice the difference between Mercurial, Bazaar, etc and
git.

Git may not be the best, but (probably because of Github) it is the winner in
this generation.

------
wodenokoto
I've never understood why you have to re-upload if you rename a folder in many
systems. I've had git reupload huge assets folders after renamaming them, and
the same happens with dropbox.

