Scenario: "same-file auto-merge": when two different people change the
same file in their separate repos. Their changes do not conflict in the
sense that they are changes to the same lines. However, their changes do
conflict in the sense that the resulting merged logic is incorrect.
Concern:
The same-file auto-merge results are overlooked (not reviewed) by the
programmer because there is nothing preventing a git-commit immediately
after the auto-merge completes.
Desired Solution:
Perform same-file auto-merge and produce auto-merge results, but mark all
such auto-merged files as "unmerged" so that they must be reviewed/resolved
before a git-commit. The "unmerged" status allows git-mergetool to be run
(e.g. kdiff3) so that the merged lines can be reviewed. In this way, all
auto-merged files are reviewed.
Does anyone know if there are configuration and/or command-line options in
git that can accomplish this in a fairly straightforward manner? For
example, something like this:
Example config:
$ cat gitconfig
[merge]
samefileauto = forceconflict
Example command:
$ git merge -s sameautoforceconflict branchx
Example results:
$ git merge -s sameautoforceconflict branchx
Merging:
11a99zz examplecommitb
virtual branchx
found 1 common ancestor(s):
22b88yy examplecommita
Auto-merging examplepgm
Merge made by recursive.
examplepgm | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
$git status
examplepgm: needs merge
# On branch branchx
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working
directory)
#
# unmerged: examplepgm
#
no changes added to commit (use "git add" and/or "git commit -a")
v/r,
Neal
In other words, when two people modify the same file in different places I
want the automerge results file, but I want the resulting file marked as
unmerged so the programmer can then run git-mergetool to review the merge
results. This also prevents the programmer from running git-commit
immediately after the automerge without reviewing the merge results. Can
"mark automerge of samefile as 'unmerged'" be done in git via config
settings or command options?
v/r,
Neal
"Neal Kreitzinger" [off-list ref] wrote in message
news:hobqoc$5h3$1@dough.gmane.org...
Scenario: "same-file auto-merge": when two different people change the
same file in their separate repos. Their changes do not conflict in the
sense that they are changes to the same lines. However, their changes do
conflict in the sense that the resulting merged logic is incorrect.
Concern:
The same-file auto-merge results are overlooked (not reviewed) by the
programmer because there is nothing preventing a git-commit immediately
after the auto-merge completes.
Desired Solution:
Perform same-file auto-merge and produce auto-merge results, but mark all
such auto-merged files as "unmerged" so that they must be
reviewed/resolved before a git-commit. The "unmerged" status allows
git-mergetool to be run (e.g. kdiff3) so that the merged lines can be
reviewed. In this way, all auto-merged files are reviewed.
Does anyone know if there are configuration and/or command-line options in
git that can accomplish this in a fairly straightforward manner? For
example, something like this:
Example config:
$ cat gitconfig
[merge]
samefileauto = forceconflict
Example command:
$ git merge -s sameautoforceconflict branchx
Example results:
$ git merge -s sameautoforceconflict branchx
Merging:
11a99zz examplecommitb
virtual branchx
found 1 common ancestor(s):
22b88yy examplecommita
Auto-merging examplepgm
Merge made by recursive.
examplepgm | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
$git status
examplepgm: needs merge
# On branch branchx
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working
directory)
#
# unmerged: examplepgm
#
no changes added to commit (use "git add" and/or "git commit -a")
v/r,
Neal
On Wed, Mar 24, 2010 at 7:14 AM, Neal Kreitzinger [off-list ref] wrote:
Scenario: "same-file auto-merge": when two different people change the
same file in their separate repos. Their changes do not conflict in the
sense that they are changes to the same lines. However, their changes do
conflict in the sense that the resulting merged logic is incorrect.
You're not being pessimistic enough :-) A ".h" file that changed only
on one side can cause the same logic issues
Desired Solution:
Perform same-file auto-merge and produce auto-merge results, but mark all
such auto-merged files as "unmerged" so that they must be reviewed/resolved
before a git-commit. The "unmerged" status allows git-mergetool to be run
(e.g. kdiff3) so that the merged lines can be reviewed. In this way, all
auto-merged files are reviewed.
No. What you need is a full blown diff for the merge, with both sides
being compared with respect to the common merge-base. That diff will
be pretty big, although I'm not sure what diff options would actually
produce that (but I'll bet "-m" figures somewhere).
On Fri, Mar 26, 2010 at 6:34 AM, Neal Kreitzinger [off-list ref] wrote:
In other words, when two people modify the same file in different places I
want the automerge results file, but I want the resulting file marked as
unmerged so the programmer can then run git-mergetool to review the merge
results. This also prevents the programmer from running git-commit
immediately after the automerge without reviewing the merge results. Can
"mark automerge of samefile as 'unmerged'" be done in git via config
settings or command options?
What about merge with '--no-commit' option and than doing 'diff --cached'. You
have option of still seeing what merged and decide to reset or commit.
--
Dilip