* Workflow question: A case for git-rebase? @ 2007-08-08 21:11 Thomas Adam 2007-08-08 21:47 ` Johannes Schindelin 0 siblings, 1 reply; 4+ messages in thread From: Thomas Adam @ 2007-08-08 21:11 UTC (permalink / raw) To: git Hello all, So we've (as in my place of work) have switched from SVN to GIT although I do have a few questions -- hopefully they're not too obvious. :) We have our master branch which is where all the latest changes are added to as a "remote shared repository which everyone pushes and pulls to. That's emulating pretty much what SVN did -- which is fine. As for myself, I maintain _locally_ a few branches (branchX, branchY) which dictate some bits and pieces I'm working on. Periodically, I will tend to merge either merge to master and then push those changes out. So far so good... But, I've now come up against a case whereby if one of my colleagues changes a file (call it fileA) in branch master, and, in the course of my working in branchX means i modify fileA also, when I come to merge branchX into master I find the original change in master (as submitted by my colleague) being reverted by my changes in branchX. Luckily I don't commit that since I do a git-diff beforehand. :) One suggest solution to this is to merge master into branchX/branchY periodically, although this has the same problems as described when I try to merge -- if I'm going to make branchX the same as master, I might as well just work in master and be done with it, right? So I was wondering if it's fine to branch from master at any given point and perhaps use git-rebasse when I come to merge? Is this even the correct mode of working? Indeed, there might be times when git-rebase isn't necessary if a merge to master from branchX or branchY won't revert a commit in master because that file had been edited, so how do I determine when to use git-rebase in this case? Or is that the correct indicator? I do hope that makes sense. Kindly, Thomas Adam ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Workflow question: A case for git-rebase? 2007-08-08 21:11 Workflow question: A case for git-rebase? Thomas Adam @ 2007-08-08 21:47 ` Johannes Schindelin 2007-08-08 21:56 ` Thomas Adam 0 siblings, 1 reply; 4+ messages in thread From: Johannes Schindelin @ 2007-08-08 21:47 UTC (permalink / raw) To: Thomas Adam; +Cc: git Hi, On Wed, 8 Aug 2007, Thomas Adam wrote: > As for myself, I maintain _locally_ a few branches (branchX, branchY) > which dictate some bits and pieces I'm working on. Periodically, I > will tend to merge either merge to master and then push those changes > out. So far so good... > > But, I've now come up against a case whereby if one of my colleagues > changes a file (call it fileA) in branch master, and, in the course of > my working in branchX means i modify fileA also, when I come to merge > branchX into master I find the original change in master (as submitted > by my colleague) being reverted by my changes in branchX. I have a hard time seeing that. If you touch the same code, unidentically, merge-recursive will not be nice to you: it will show conflicts, and you have to resolve them. Or do you use "-s ours"? Ciao, Dscho ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Workflow question: A case for git-rebase? 2007-08-08 21:47 ` Johannes Schindelin @ 2007-08-08 21:56 ` Thomas Adam 2007-08-09 20:30 ` Jan Hudec 0 siblings, 1 reply; 4+ messages in thread From: Thomas Adam @ 2007-08-08 21:56 UTC (permalink / raw) To: Johannes Schindelin; +Cc: git On 08/08/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote: > Hi, > > On Wed, 8 Aug 2007, Thomas Adam wrote: > > > As for myself, I maintain _locally_ a few branches (branchX, branchY) > > which dictate some bits and pieces I'm working on. Periodically, I > > will tend to merge either merge to master and then push those changes > > out. So far so good... > > > > But, I've now come up against a case whereby if one of my colleagues > > changes a file (call it fileA) in branch master, and, in the course of > > my working in branchX means i modify fileA also, when I come to merge > > branchX into master I find the original change in master (as submitted > > by my colleague) being reverted by my changes in branchX. > > I have a hard time seeing that. If you touch the same code, > unidentically, merge-recursive will not be nice to you: it will show > conflicts, and you have to resolve them. > > Or do you use "-s ours"? No, nothing like that. I have had a situation where by a merge from branchX to master has resulted in master's changes to fileA being reverted based on what was in the contents of fileA in branchX -- this is of course wrong though -- master hsa the most recent copy. My solution therefore was to cherry pick the commit into branchX and remerge into master. This is why I was forced to ask about whether or not git-rebase was the correct way to go. Although I suppose this leads me to the ancillory question of: At the point I merged master into branchX did this cause any problems for any future merges of branchX into master? I cannot recall if this "revert scenario" I describe to master happened pre or past my merge of master into branchX, but I suspect it was after I had merged master into branchX. -- Thomas Adam ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Workflow question: A case for git-rebase? 2007-08-08 21:56 ` Thomas Adam @ 2007-08-09 20:30 ` Jan Hudec 0 siblings, 0 replies; 4+ messages in thread From: Jan Hudec @ 2007-08-09 20:30 UTC (permalink / raw) To: Thomas Adam; +Cc: Johannes Schindelin, git [-- Attachment #1: Type: text/plain, Size: 3834 bytes --] On Wed, Aug 08, 2007 at 22:56:33 +0100, Thomas Adam wrote: > On 08/08/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote: > > Hi, > > > > On Wed, 8 Aug 2007, Thomas Adam wrote: > > > > > As for myself, I maintain _locally_ a few branches (branchX, branchY) > > > which dictate some bits and pieces I'm working on. Periodically, I > > > will tend to merge either merge to master and then push those changes > > > out. So far so good... > > > > > > But, I've now come up against a case whereby if one of my colleagues > > > changes a file (call it fileA) in branch master, and, in the course of > > > my working in branchX means i modify fileA also, when I come to merge > > > branchX into master I find the original change in master (as submitted > > > by my colleague) being reverted by my changes in branchX. > > > > I have a hard time seeing that. If you touch the same code, > > unidentically, merge-recursive will not be nice to you: it will show > > conflicts, and you have to resolve them. > > > > Or do you use "-s ours"? > > No, nothing like that. I have had a situation where by a merge from > branchX to master has resulted in master's changes to fileA being > reverted based on what was in the contents of fileA in branchX -- this > is of course wrong though -- master hsa the most recent copy. My > solution therefore was to cherry pick the commit into branchX and > remerge into master. This is why I was forced to ask about whether or > not git-rebase was the correct way to go. Git rebase is a correct way to go, with advantage of resulting in simpler history and disadvantage of slightly harder conflict resolution (since you merge commit-at-a-time rather than in one big block). However merge is equally correct way to go. Either there is a bug in merge -- which I would consider rather unlikely, though not impossible -- or you actually did, probably unintentionally, undo the master's changes. This might happen if: - You try to merge, either in --no-commit mode, or have a conflict, so it's not commited. - Then decide you don't want to resolve now and undo the changes by checking out the files, but don't clean the information about merge in progress. - Commit some changes in such state. This records a merge, that revers all changes from master. Similarly attempt to merge just part of files would result in a problem like you describe -- merging is only supported on whole trees. > Although I suppose this leads me to the ancillory question of: At the > point I merged master into branchX did this cause any problems for any > future merges of branchX into master? I cannot recall if this > "revert scenario" I describe to master happened pre or past my merge > of master into branchX, but I suspect it was after I had merged master > into branchX. Merge is completely symetrical operation in git. Merging branchX into master and merging master into branchX is the same for all purposes whatsoever (though you can tell how you did it by order of the parsent in the commit objecT). Repeated merges between two branches are allowed and always correct thing to do. However, you should be aware, that attempt to reject a change will be recorded as a reversal and merged as such. You can try visualizing the situation before the merge with: gitk master-before-merge...branchX-before-merge (or equivalently: gitk merge-result^...merge-result^2) print the base revision with: git merge-base master-before-merge...branchX-before-merge (or equivalently: git merge-base merge-result^...merge-result^2) look it up the graph and contemplate at what could have caused the reversal. I expect you can't disclose the code to ask anybody help you with that. -- Jan 'Bulb' Hudec <bulb@ucw.cz> [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-08-09 20:31 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-08-08 21:11 Workflow question: A case for git-rebase? Thomas Adam 2007-08-08 21:47 ` Johannes Schindelin 2007-08-08 21:56 ` Thomas Adam 2007-08-09 20:30 ` Jan Hudec
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).