[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[PATCH] Pass the name of the conflicted file to the merge tool

From: John Gardiner Myers <jgmyers_at_proofpoint.com>
Date: Wed, 24 Dec 2008 16:15:56 -0800

The following patch passes the name of the conflicted file to the merge
tool, so it can apply local knowledge based on that name.

I would like to have it also pass the names of the left-version and
right-version, but svn_wc_merge3() has filling in that information
marked as a TODO comment.

[[[
* subversion/svn/cl.h,
  subversion/svn/util.c,
  subversion/svn/conflict-callbacks.c: Pass the name of the conflicted
file to the merge tool
]]]
Index: subversion/svn/cl.h
===================================================================
--- subversion/svn/cl.h (revision 34905)
+++ subversion/svn/cl.h (working copy)
@@ -480,6 +480,7 @@

 /* Search for a merge tool command in environment variables,
    and use it to perform the merge of the four given files.
+ WC_NAME is the name of the file that is in conflict.
    Use POOL for all allocations.

    CONFIG is a hash of svn_config_t * items keyed on a configuration
@@ -490,6 +491,7 @@
                               const char *their_path,
                               const char *my_path,
                               const char *merged_path,
+ const char *wc_name,
                               apr_hash_t *config,
                               apr_pool_t *pool);

Index: subversion/svn/util.c
===================================================================
--- ../svn-trunk2/subversion/svn/util.c 2008-12-24 15:51:48.000000000 -0800
+++ subversion/svn/util.c 2008-12-24 16:07:19.000000000 -0800
@@ -200,6 +200,7 @@
                               const char *their_path,
                               const char *my_path,
                               const char *merged_path,
+ const char *wc_name,
                               apr_hash_t *config,
                               apr_pool_t *pool)
 {
@@ -239,7 +240,7 @@

   {
     const char *arguments[] = { merge_tool, base_path, their_path,
- my_path, merged_path, NULL};
+ my_path, merged_path, wc_name, NULL};
     char *cwd;
     int exitcode;
     apr_status_t status = apr_filepath_get(&cwd, APR_FILEPATH_NATIVE,
pool);
Index: subversion/svn/conflict-callbacks.c
===================================================================
--- subversion/svn/conflict-callbacks.c (revision 34905)
+++ subversion/svn/conflict-callbacks.c (working copy)
@@ -219,7 +219,7 @@

   err = svn_cl__merge_file_externally(desc->base_file, desc->their_file,
                                       desc->my_file, desc->merged_file,
- b->config, pool);
+ desc->path, b->config, pool);
   if (err && err->apr_err == SVN_ERR_CL_NO_EXTERNAL_MERGE_TOOL)
     {
       SVN_ERR(svn_cmdline_fprintf(stderr, pool, "%s\n",
@@ -336,6 +336,7 @@
                                               desc->their_file,
                                               desc->my_file,
                                               desc->merged_file,
+ desc->path,
                                               b->config,
                                               pool);
           if (err && err->apr_err == SVN_ERR_CL_NO_EXTERNAL_MERGE_TOOL)

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=991988
Received on 2008-12-25 09:07:29 CET

This is an archived mail posted to the Subversion Dev mailing list.