You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Erik Enge <ee...@prium.net> on 2005/09/16 01:43:42 UTC

Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Subversion version 1.2.3 on RedHat Linux 7.2 using diff3 version 2.7.2.

I have specified that it should use the external diff3 by setting 
the diff3_cmd setting in the site-wide configuration file and it's 
picking up on this setting.  During a three-way diff, Subversion 
reports the file as merGed but diff3 puts the .mine, .revNEW, 
.revOLD files on the filesystem and it also merges the conflict 
markers into the file I updated (detailed information can be 
provided if needed).  I was tracing this in Subversion's 
sourcecode and from what I can tell, here's what's happening:

Subversion makes two runs to libsvn_wc/merge.c's svn_wc_merge() during
the update.  During the first, dry_run is 1, during the 
second, it is 0.  My problem is that during the dry run 
Subversion uses its internal diff3 (which is producing the 
merGe'd state) and during the second phase it's using the 
external diff3 utility which is telling me this is a Conflict.

Have I run into a bug or have I misconfigured Subversion in some way?
Let me know if there's any other information I can provide to make
it easier to answer this question.

Thanks for any pointers,
Erik.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Philip Martin <ph...@codematters.co.uk>.
"Max Bowsher" <ma...@ukf.net> writes:

>> +++ subversion/libsvn_wc/update_editor.c (working copy)
>> @@ -2203,7 +2203,7 @@
>>                                      svn_path_join (base, base_name,
>> pool),
>>                                      adm_access,
>>                                      oldrev_str, newrev_str, ".mine",
>> -                                     TRUE, &merge_outcome, NULL,
>> +                                     TRUE, &merge_outcome, diff3_cmd,
>>                                      pool));
>>
>>             } /* end: working file exists and has mods */
>
> Nope, it's an intentional and rather nasty hack.

It's not documented, and the issue is "fixed" :-(

-- 
Philip Martin

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Philip Martin <ph...@codematters.co.uk>.
"Max Bowsher" <ma...@ukf.net> writes:

>> +++ subversion/libsvn_wc/update_editor.c (working copy)
>> @@ -2203,7 +2203,7 @@
>>                                      svn_path_join (base, base_name,
>> pool),
>>                                      adm_access,
>>                                      oldrev_str, newrev_str, ".mine",
>> -                                     TRUE, &merge_outcome, NULL,
>> +                                     TRUE, &merge_outcome, diff3_cmd,
>>                                      pool));
>>
>>             } /* end: working file exists and has mods */
>
> Nope, it's an intentional and rather nasty hack.

It's not documented, and the issue is "fixed" :-(

-- 
Philip Martin

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Max Bowsher <ma...@ukf.net>.
Philip Martin wrote:
> Erik Huelsmann <eh...@gmail.com> writes:
>
>>> Subversion makes two runs to libsvn_wc/merge.c's svn_wc_merge() during
>>> the update.  During the first, dry_run is 1, during the
>>> second, it is 0.  My problem is that during the dry run
>>> Subversion uses its internal diff3 (which is producing the
>>> merGe'd state) and during the second phase it's using the
>>> external diff3 utility which is telling me this is a Conflict.
>
> Yup, that's a bug.
>
> --- subversion/libsvn_wc/update_editor.c (revision 16751)
> +++ subversion/libsvn_wc/update_editor.c (working copy)
> @@ -2203,7 +2203,7 @@
>                                      svn_path_join (base, base_name, 
> pool),
>                                      adm_access,
>                                      oldrev_str, newrev_str, ".mine",
> -                                     TRUE, &merge_outcome, NULL,
> +                                     TRUE, &merge_outcome, diff3_cmd,
>                                      pool));
>
>             } /* end: working file exists and has mods */

Nope, it's an intentional and rather nasty hack.

The intention is to prevent interactive diff3 programs from delaying the 
update long enough to cause the server to time out and close the connection.

A proper, but unfortunately far more invasive, fix needs to be sought.

Max.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Philip Martin <ph...@codematters.co.uk>.
Philip Martin <ph...@codematters.co.uk> writes:

> Erik Huelsmann <eh...@gmail.com> writes:
>
>>> Subversion makes two runs to libsvn_wc/merge.c's svn_wc_merge() during
>>> the update.  During the first, dry_run is 1, during the
>>> second, it is 0.  My problem is that during the dry run
>>> Subversion uses its internal diff3 (which is producing the
>>> merGe'd state) and during the second phase it's using the
>>> external diff3 utility which is telling me this is a Conflict.
>
> Yup, that's a bug.
>
> --- subversion/libsvn_wc/update_editor.c	(revision 16751)
> +++ subversion/libsvn_wc/update_editor.c	(working copy)
> @@ -2203,7 +2203,7 @@
>                                       svn_path_join (base, base_name, pool),
>                                       adm_access,
>                                       oldrev_str, newrev_str, ".mine",
> -                                     TRUE, &merge_outcome, NULL,
> +                                     TRUE, &merge_outcome, diff3_cmd, 
>                                       pool));
>                
>              } /* end: working file exists and has mods */

I'm not going to apply this patch, as it reverts r10889 which "fixed"
issue 1914.  The problem is that it causes the external diff3 to be
run twice, which is not really acceptable if diff3 is a graphical
diff3 that relies on user interaction.  I'm going to reopen 1914.

-- 
Philip Martin

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Max Bowsher <ma...@ukf.net>.
Philip Martin wrote:
> Erik Huelsmann <eh...@gmail.com> writes:
>
>>> Subversion makes two runs to libsvn_wc/merge.c's svn_wc_merge() during
>>> the update.  During the first, dry_run is 1, during the
>>> second, it is 0.  My problem is that during the dry run
>>> Subversion uses its internal diff3 (which is producing the
>>> merGe'd state) and during the second phase it's using the
>>> external diff3 utility which is telling me this is a Conflict.
>
> Yup, that's a bug.
>
> --- subversion/libsvn_wc/update_editor.c (revision 16751)
> +++ subversion/libsvn_wc/update_editor.c (working copy)
> @@ -2203,7 +2203,7 @@
>                                      svn_path_join (base, base_name, 
> pool),
>                                      adm_access,
>                                      oldrev_str, newrev_str, ".mine",
> -                                     TRUE, &merge_outcome, NULL,
> +                                     TRUE, &merge_outcome, diff3_cmd,
>                                      pool));
>
>             } /* end: working file exists and has mods */

Nope, it's an intentional and rather nasty hack.

The intention is to prevent interactive diff3 programs from delaying the 
update long enough to cause the server to time out and close the connection.

A proper, but unfortunately far more invasive, fix needs to be sought.

Max.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Philip Martin <ph...@codematters.co.uk>.
Philip Martin <ph...@codematters.co.uk> writes:

> Erik Huelsmann <eh...@gmail.com> writes:
>
>>> Subversion makes two runs to libsvn_wc/merge.c's svn_wc_merge() during
>>> the update.  During the first, dry_run is 1, during the
>>> second, it is 0.  My problem is that during the dry run
>>> Subversion uses its internal diff3 (which is producing the
>>> merGe'd state) and during the second phase it's using the
>>> external diff3 utility which is telling me this is a Conflict.
>
> Yup, that's a bug.
>
> --- subversion/libsvn_wc/update_editor.c	(revision 16751)
> +++ subversion/libsvn_wc/update_editor.c	(working copy)
> @@ -2203,7 +2203,7 @@
>                                       svn_path_join (base, base_name, pool),
>                                       adm_access,
>                                       oldrev_str, newrev_str, ".mine",
> -                                     TRUE, &merge_outcome, NULL,
> +                                     TRUE, &merge_outcome, diff3_cmd, 
>                                       pool));
>                
>              } /* end: working file exists and has mods */

I'm not going to apply this patch, as it reverts r10889 which "fixed"
issue 1914.  The problem is that it causes the external diff3 to be
run twice, which is not really acceptable if diff3 is a graphical
diff3 that relies on user interaction.  I'm going to reopen 1914.

-- 
Philip Martin

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Philip Martin <ph...@codematters.co.uk>.
Erik Huelsmann <eh...@gmail.com> writes:

>> Subversion makes two runs to libsvn_wc/merge.c's svn_wc_merge() during
>> the update.  During the first, dry_run is 1, during the
>> second, it is 0.  My problem is that during the dry run
>> Subversion uses its internal diff3 (which is producing the
>> merGe'd state) and during the second phase it's using the
>> external diff3 utility which is telling me this is a Conflict.

Yup, that's a bug.

--- subversion/libsvn_wc/update_editor.c	(revision 16751)
+++ subversion/libsvn_wc/update_editor.c	(working copy)
@@ -2203,7 +2203,7 @@
                                      svn_path_join (base, base_name, pool),
                                      adm_access,
                                      oldrev_str, newrev_str, ".mine",
-                                     TRUE, &merge_outcome, NULL,
+                                     TRUE, &merge_outcome, diff3_cmd, 
                                      pool));
               
             } /* end: working file exists and has mods */

-- 
Philip Martin

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Philip Martin <ph...@codematters.co.uk>.
Erik Huelsmann <eh...@gmail.com> writes:

>> Subversion makes two runs to libsvn_wc/merge.c's svn_wc_merge() during
>> the update.  During the first, dry_run is 1, during the
>> second, it is 0.  My problem is that during the dry run
>> Subversion uses its internal diff3 (which is producing the
>> merGe'd state) and during the second phase it's using the
>> external diff3 utility which is telling me this is a Conflict.

Yup, that's a bug.

--- subversion/libsvn_wc/update_editor.c	(revision 16751)
+++ subversion/libsvn_wc/update_editor.c	(working copy)
@@ -2203,7 +2203,7 @@
                                      svn_path_join (base, base_name, pool),
                                      adm_access,
                                      oldrev_str, newrev_str, ".mine",
-                                     TRUE, &merge_outcome, NULL,
+                                     TRUE, &merge_outcome, diff3_cmd, 
                                      pool));
               
             } /* end: working file exists and has mods */

-- 
Philip Martin

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Erik Huelsmann <eh...@gmail.com>.
Ping!

No reaction on users@, so forwarding to dev@.

On 9/16/05, Erik Enge <ee...@prium.net> wrote:
> Subversion version 1.2.3 on RedHat Linux 7.2 using diff3 version 2.7.2.
>
> I have specified that it should use the external diff3 by setting
> the diff3_cmd setting in the site-wide configuration file and it's
> picking up on this setting.  During a three-way diff, Subversion
> reports the file as merGed but diff3 puts the .mine, .revNEW,
> .revOLD files on the filesystem and it also merges the conflict
> markers into the file I updated (detailed information can be
> provided if needed).  I was tracing this in Subversion's
> sourcecode and from what I can tell, here's what's happening:
>
> Subversion makes two runs to libsvn_wc/merge.c's svn_wc_merge() during
> the update.  During the first, dry_run is 1, during the
> second, it is 0.  My problem is that during the dry run
> Subversion uses its internal diff3 (which is producing the
> merGe'd state) and during the second phase it's using the
> external diff3 utility which is telling me this is a Conflict.
>
> Have I run into a bug or have I misconfigured Subversion in some way?
> Let me know if there's any other information I can provide to make
> it easier to answer this question.
>
> Thanks for any pointers,
> Erik.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: users-help@subversion.tigris.org
>
>

Re: Using --diff-cmd=/usr/bin/diff3 says merGed but is Conflict

Posted by Erik Huelsmann <eh...@gmail.com>.
Ping!

No reaction on users@, so forwarding to dev@.

On 9/16/05, Erik Enge <ee...@prium.net> wrote:
> Subversion version 1.2.3 on RedHat Linux 7.2 using diff3 version 2.7.2.
>
> I have specified that it should use the external diff3 by setting
> the diff3_cmd setting in the site-wide configuration file and it's
> picking up on this setting.  During a three-way diff, Subversion
> reports the file as merGed but diff3 puts the .mine, .revNEW,
> .revOLD files on the filesystem and it also merges the conflict
> markers into the file I updated (detailed information can be
> provided if needed).  I was tracing this in Subversion's
> sourcecode and from what I can tell, here's what's happening:
>
> Subversion makes two runs to libsvn_wc/merge.c's svn_wc_merge() during
> the update.  During the first, dry_run is 1, during the
> second, it is 0.  My problem is that during the dry run
> Subversion uses its internal diff3 (which is producing the
> merGe'd state) and during the second phase it's using the
> external diff3 utility which is telling me this is a Conflict.
>
> Have I run into a bug or have I misconfigured Subversion in some way?
> Let me know if there's any other information I can provide to make
> it easier to answer this question.
>
> Thanks for any pointers,
> Erik.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: users-help@subversion.tigris.org
>
>