@@ -162,45 +162,16 @@ static int update_head_to_default(git_repository *repo)
162162 return error ;
163163}
164164
165- static int update_remote_head_byname (
166- git_repository * repo ,
167- const char * remote_name ,
168- const char * tracking_branch_name ,
169- const char * reflog_message )
170- {
171- git_buf tracking_head_name = GIT_BUF_INIT ;
172- git_reference * remote_head = NULL ;
173- int error ;
174-
175- if ((error = git_buf_printf (& tracking_head_name ,
176- "%s%s/%s" ,
177- GIT_REFS_REMOTES_DIR ,
178- remote_name ,
179- GIT_HEAD_FILE )) < 0 )
180- goto cleanup ;
181-
182- error = git_reference_symbolic_create (
183- & remote_head ,
184- repo ,
185- git_buf_cstr (& tracking_head_name ),
186- tracking_branch_name ,
187- true,
188- reflog_message );
189-
190- cleanup :
191- git_reference_free (remote_head );
192- git_buf_dispose (& tracking_head_name );
193- return error ;
194- }
195-
196165static int update_remote_head (
197166 git_repository * repo ,
198167 git_remote * remote ,
199168 git_buf * target ,
200169 const char * reflog_message )
201170{
202171 git_refspec * refspec ;
203- git_buf tracking_branch_name = GIT_BUF_INIT ;
172+ git_reference * remote_head = NULL ;
173+ git_buf remote_head_name = GIT_BUF_INIT ;
174+ git_buf remote_branch_name = GIT_BUF_INIT ;
204175 int error ;
205176
206177 /* Determine the remote tracking ref name from the local branch */
@@ -213,19 +184,30 @@ static int update_remote_head(
213184 }
214185
215186 if ((error = git_refspec_transform (
216- & tracking_branch_name ,
187+ & remote_branch_name ,
217188 refspec ,
218189 git_buf_cstr (target ))) < 0 )
219190 goto cleanup ;
220191
221- error = update_remote_head_byname (
222- repo ,
192+ if ((error = git_buf_printf (& remote_head_name ,
193+ "%s%s/%s" ,
194+ GIT_REFS_REMOTES_DIR ,
223195 git_remote_name (remote ),
224- git_buf_cstr (& tracking_branch_name ),
196+ GIT_HEAD_FILE )) < 0 )
197+ goto cleanup ;
198+
199+ error = git_reference_symbolic_create (
200+ & remote_head ,
201+ repo ,
202+ git_buf_cstr (& remote_head_name ),
203+ git_buf_cstr (& remote_branch_name ),
204+ true,
225205 reflog_message );
226206
227207cleanup :
228- git_buf_dispose (& tracking_branch_name );
208+ git_reference_free (remote_head );
209+ git_buf_dispose (& remote_branch_name );
210+ git_buf_dispose (& remote_head_name );
229211 return error ;
230212}
231213
@@ -295,11 +277,8 @@ static int update_head_to_branch(
295277 if ((retcode = git_reference_lookup (& remote_ref , repo , git_buf_cstr (& remote_branch_name ))) < 0 )
296278 goto cleanup ;
297279
298- if ((retcode = update_head_to_new_branch (repo , git_reference_target (remote_ref ), branch ,
299- reflog_message )) < 0 )
300- goto cleanup ;
301-
302- retcode = update_remote_head_byname (repo , remote_name , remote_branch_name .ptr , reflog_message );
280+ retcode = update_head_to_new_branch (repo , git_reference_target (remote_ref ), branch ,
281+ reflog_message );
303282
304283cleanup :
305284 git_reference_free (remote_ref );
0 commit comments