@@ -50,7 +50,7 @@ static int diff_two(const char *file1, const char *label1,
5050int cmd_rerere (int argc , const char * * argv , const char * prefix )
5151{
5252 struct string_list merge_rr = STRING_LIST_INIT_DUP ;
53- int i , fd , autoupdate = -1 , flags = 0 ;
53+ int i , autoupdate = -1 , flags = 0 ;
5454
5555 struct option options [] = {
5656 OPT_SET_INT (0 , "rerere-autoupdate" , & autoupdate ,
@@ -79,18 +79,16 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)
7979 return rerere_forget (& pathspec );
8080 }
8181
82- fd = setup_rerere (& merge_rr , flags );
83- if (fd < 0 )
84- return 0 ;
85-
8682 if (!strcmp (argv [0 ], "clear" )) {
8783 rerere_clear (& merge_rr );
8884 } else if (!strcmp (argv [0 ], "gc" ))
8985 rerere_gc (& merge_rr );
90- else if (!strcmp (argv [0 ], "status" ))
86+ else if (!strcmp (argv [0 ], "status" )) {
87+ if (setup_rerere (& merge_rr , flags | RERERE_READONLY ) < 0 )
88+ return 0 ;
9189 for (i = 0 ; i < merge_rr .nr ; i ++ )
9290 printf ("%s\n" , merge_rr .items [i ].string );
93- else if (!strcmp (argv [0 ], "remaining" )) {
91+ } else if (!strcmp (argv [0 ], "remaining" )) {
9492 rerere_remaining (& merge_rr );
9593 for (i = 0 ; i < merge_rr .nr ; i ++ ) {
9694 if (merge_rr .items [i ].util != RERERE_RESOLVED )
@@ -100,13 +98,15 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)
10098 * string_list_clear() */
10199 merge_rr .items [i ].util = NULL ;
102100 }
103- } else if (!strcmp (argv [0 ], "diff" ))
101+ } else if (!strcmp (argv [0 ], "diff" )) {
102+ if (setup_rerere (& merge_rr , flags | RERERE_READONLY ) < 0 )
103+ return 0 ;
104104 for (i = 0 ; i < merge_rr .nr ; i ++ ) {
105105 const char * path = merge_rr .items [i ].string ;
106106 const char * name = (const char * )merge_rr .items [i ].util ;
107107 diff_two (rerere_path (name , "preimage" ), path , path , path );
108108 }
109- else
109+ } else
110110 usage_with_options (rerere_usage , options );
111111
112112 string_list_clear (& merge_rr , 1 );
0 commit comments