@@ -61,6 +61,23 @@ static const char *add_slash(const char *path)
61
61
static struct lock_file lock_file ;
62
62
#define SUBMODULE_WITH_GITDIR ((const char *)1)
63
63
64
+ static void prepare_move_submodule (const char * src , int first ,
65
+ const char * * submodule_gitfile )
66
+ {
67
+ struct strbuf submodule_dotgit = STRBUF_INIT ;
68
+ if (!S_ISGITLINK (active_cache [first ]-> ce_mode ))
69
+ die (_ ("Directory %s is in index and no submodule?" ), src );
70
+ if (!is_staging_gitmodules_ok ())
71
+ die (_ ("Please stage your changes to .gitmodules or stash them to proceed" ));
72
+ strbuf_addf (& submodule_dotgit , "%s/.git" , src );
73
+ * submodule_gitfile = read_gitfile (submodule_dotgit .buf );
74
+ if (* submodule_gitfile )
75
+ * submodule_gitfile = xstrdup (* submodule_gitfile );
76
+ else
77
+ * submodule_gitfile = SUBMODULE_WITH_GITDIR ;
78
+ strbuf_release (& submodule_dotgit );
79
+ }
80
+
64
81
int cmd_mv (int argc , const char * * argv , const char * prefix )
65
82
{
66
83
int i , gitmodules_modified = 0 ;
@@ -132,20 +149,11 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
132
149
bad = _ ("cannot move directory over file" );
133
150
else if (src_is_dir ) {
134
151
int first = cache_name_pos (src , length );
135
- if (first >= 0 ) {
136
- struct strbuf submodule_dotgit = STRBUF_INIT ;
137
- if (!S_ISGITLINK (active_cache [first ]-> ce_mode ))
138
- die (_ ("Huh? Directory %s is in index and no submodule?" ), src );
139
- if (!is_staging_gitmodules_ok ())
140
- die (_ ("Please, stage your changes to .gitmodules or stash them to proceed" ));
141
- strbuf_addf (& submodule_dotgit , "%s/.git" , src );
142
- submodule_gitfile [i ] = read_gitfile (submodule_dotgit .buf );
143
- if (submodule_gitfile [i ])
144
- submodule_gitfile [i ] = xstrdup (submodule_gitfile [i ]);
145
- else
146
- submodule_gitfile [i ] = SUBMODULE_WITH_GITDIR ;
147
- strbuf_release (& submodule_dotgit );
148
- } else {
152
+
153
+ if (first >= 0 )
154
+ prepare_move_submodule (src , first ,
155
+ submodule_gitfile + i );
156
+ else {
149
157
const char * src_w_slash = add_slash (src );
150
158
int last , len_w_slash = length + 1 ;
151
159
0 commit comments