[pacman-dev] [PATCH 1/2] Enabled new interactive prompt and updated some tests.

Bryan Ischo bji-keyword-pacman.3644cb at www.ischo.com
Mon Feb 23 17:42:55 EST 2009


Aaron Griffin wrote:
>
> I dunno, I don't see this as a problem because it's just not the way
> my workflow works. I make heavy use of git (well, git svn) at work, on
> huge amounts of code, and never run into these issues.
>   

I can certainly believe that git is very appropriate for certain 
workflows, and the more closely the way you want to work matches the git 
way, the happier you are.  I can say that where I worked most recently, 
years and years of accumulated experience led to certain workflows for 
branching and merging that I don't think would have been easily adapted 
to the git way.  But I could be wrong, in fact I'd love to be wrong, 
because it's obvious that lots of open source projects are adopting git 
and I expect I'll have to use git more and more in the future whether I 
like it or not.  So I really hope that my issues with git are just 
misunderstandings and not something that will make my life very 
difficult when using it in the future.

> I just tried the rename case and it worked perfectly fine.
>
> http://code.phraktured.net/cgit.cgi/foobar/
> branch-a was made off the first commit, all changes were done and
> committed, then I switched back to master, renamed a file I changed
> _twice_ in branch-a, switched back to branch-a and did a "git rebase
> master". You can see the results there. It even lists the new file
> name in the diffs
>
>   

Attached are a few scripts to demonstrate what I'm talking about.

First is losthistory.sh, that shows that after you rename a file on a 
branch and then merge that back to the master, you can't easily get the 
history of the file before the rename.  That's a bummer and can make 
tracking the true history of a file difficult.

Next is conflict.sh, that demonstrates that git gives conflicts if two 
contiguous lines of a file are modified on two separate branches.  
Introducing a newline between the lines allows git to merge properly.  
This has nothing to do with file renames, it's just something that bit 
me while I was composing some of these other scripts, and I thought it 
was interesting.  Run 'conflict.sh' to see how the merge is properly 
handled, and then 'conflict.sh broken' to see how the merge is not 
properly handled if the modified lines don't have a newline between 
them.  Unfortunate.

Finally, there's mvconflict.sh.  This is the exact same as conflict.sh 
except that it always has the newline in between the lines (so that we 
know that git ought to be able to merge properly), and it renames the 
file on the branch before modifying it.  git cannot merge the file after 
it has been moved and modified on the branch, and modified but not moved 
on the master, although it should be able to because the changes are 
exactly the same as in conflict.sh (that did merge properly), except 
with a file rename in the middle.

Perhaps rebase works better than merge when handling file renames, I 
don't know.  Merging in Perforce is nice because you retain development 
history of files across branches; but I can see how this might be 
contrary to the git philosophy.  After all, branches are generally local 
in git, and you lose all of your branch history when you rebase/merge 
your changes back into master for the purposes of pushing those changes 
to master in the origin git server anyway, especially if you use squash 
to collapse your history.

I'd be happy to take further discussion off-list if people are getting 
tired of this.

Thanks,
Bryan



More information about the pacman-dev mailing list