[TYPO3-core] Git Experts: Fix amnesia?
Peter Niederlag
peter.niederlag at typo3.org
Wed Oct 17 11:11:54 CEST 2012
Hi,git
On 17.10.2012 10:22, Helmut Hummel wrote:
> Hi,
>
> what I learned from using Git is that nearly anything is possible.
> Now I have a challenging problem I'd like to discuss.
>
> When moving to namespaces, we moved and at the same time changed files
> in our master branch.
>
> With doing both we lost our complete history of the newly renamed files.
git has no "track rename/move" operation! git has a builtin algorithm
that detects renames/moves. This is based on detecting changes to the
tree/file contents (It doesn't matter if you use 'git mv' or 'git
add/git rm' as long as the result goes into one commit/tree).
That means: if you relocate a file *and* change huge chunks of its
content in *one* commit chances are high git commands wont detect the
rename. This is a none reversable thing! IMHO no way you can fix this
with more commits. :(
Also, if you *duplicate* a file to another location and keep the old
file modified in place for backwards compat manners this duplicated file
wont have a connection to the history by default (git log
t3lib/class.t3lib_beuserauth.php, git log
typo3/sysext/core/Classes/Authentication/BackendUserAuthentication.php).
You could of course rename first and commit, change content/commit,
readd backwards compat file in old location(having "no" history)/commit.
> That is really a pity and if possible I want to fix that.
hmmm...
> I have two ideas how we can manage to do that.
>
> 1. Rewrite the history of the *remote* repo
imho rewrite is the only chance and needs proper preparation in order to
get the desired affect. To me it seems like this will be quite hard work. :(
As master is not in production/released yet I would consider a 'git
fetch --force'(needed for a rewritten remote branch) a small burden that
we could force our git users to do.
*But* any pending changes probably would have to be cherry-picked, I
seriously doubt rebasing will work after such a huge history rewrite.
> 2. a) Change the content of the original files with their current
> content
> b) Remove the new files
> c) Move the "old" files to their new location
> d) Add the dummy files in the old location.
imho not possible.
[...]
> Is it worth fixing this history loss?
Tough question... not sure yet. In general the history is worth to be
kept but fixing it now... ?
There are workarounds like the "git log --follow" available in cases needed.
And more opinions on this question?
> Can someone put effort on this task?
pheew... I can try to assist but wont be able to spend more than three
ours in the next 7 days on this task. :(
Could someone maybe point me into the number of commits that might need
to be changed/reordered? Is this limited to "git show
4612259a457f43edaf7" or some more?
Greets,
Peter
More information about the TYPO3-team-core
mailing list