8
8
#include "tag.h"
9
9
#include "string-list.h"
10
10
#include "mergesort.h"
11
+ #include "argv-array.h"
11
12
12
13
enum map_direction { FROM_SRC , FROM_DST };
13
14
@@ -1997,10 +1998,9 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs,
1997
1998
{
1998
1999
unsigned char sha1 [20 ];
1999
2000
struct commit * ours , * theirs ;
2000
- char symmetric [84 ];
2001
2001
struct rev_info revs ;
2002
- const char * rev_argv [ 10 ], * base ;
2003
- int rev_argc ;
2002
+ const char * base ;
2003
+ struct argv_array argv = ARGV_ARRAY_INIT ;
2004
2004
2005
2005
/* Cannot stat unless we are marked to build on top of somebody else. */
2006
2006
base = branch_get_upstream (branch , NULL );
@@ -2029,19 +2029,15 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs,
2029
2029
}
2030
2030
2031
2031
/* Run "rev-list --left-right ours...theirs" internally... */
2032
- rev_argc = 0 ;
2033
- rev_argv [rev_argc ++ ] = NULL ;
2034
- rev_argv [rev_argc ++ ] = "--left-right" ;
2035
- rev_argv [rev_argc ++ ] = symmetric ;
2036
- rev_argv [rev_argc ++ ] = "--" ;
2037
- rev_argv [rev_argc ] = NULL ;
2038
-
2039
- strcpy (symmetric , sha1_to_hex (ours -> object .sha1 ));
2040
- strcpy (symmetric + 40 , "..." );
2041
- strcpy (symmetric + 43 , sha1_to_hex (theirs -> object .sha1 ));
2032
+ argv_array_push (& argv , "" ); /* ignored */
2033
+ argv_array_push (& argv , "--left-right" );
2034
+ argv_array_pushf (& argv , "%s...%s" ,
2035
+ sha1_to_hex (ours -> object .sha1 ),
2036
+ sha1_to_hex (theirs -> object .sha1 ));
2037
+ argv_array_push (& argv , "--" );
2042
2038
2043
2039
init_revisions (& revs , NULL );
2044
- setup_revisions (rev_argc , rev_argv , & revs , NULL );
2040
+ setup_revisions (argv . argc , argv . argv , & revs , NULL );
2045
2041
if (prepare_revision_walk (& revs ))
2046
2042
die ("revision walk setup failed" );
2047
2043
@@ -2061,6 +2057,8 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs,
2061
2057
/* clear object flags smudged by the above traversal */
2062
2058
clear_commit_marks (ours , ALL_REV_FLAGS );
2063
2059
clear_commit_marks (theirs , ALL_REV_FLAGS );
2060
+
2061
+ argv_array_clear (& argv );
2064
2062
return 0 ;
2065
2063
}
2066
2064
0 commit comments