@@ -142,7 +142,7 @@ func (self *RemotesController) enter(remote *models.Remote) error {
142
142
return nil
143
143
}
144
144
145
- func (self * RemotesController ) addRemoteHelper (remoteName string , remoteUrl string ) error {
145
+ func (self * RemotesController ) addRemoteHelper (remoteName string , remoteUrl string , branchToCheckout string ) error {
146
146
self .c .LogAction (self .c .Tr .Actions .AddRemote )
147
147
if err := self .c .Git ().Remote .AddRemote (remoteName , remoteUrl ); err != nil {
148
148
return err
@@ -165,7 +165,7 @@ func (self *RemotesController) addRemoteHelper(remoteName string, remoteUrl stri
165
165
}
166
166
167
167
// Fetch the new remote
168
- return self .fetch (self .c .Contexts ().Remotes .GetSelected ())
168
+ return self .fetchAndCheckout (self .c .Contexts ().Remotes .GetSelected (), branchToCheckout )
169
169
}
170
170
171
171
func (self * RemotesController ) add () error {
@@ -175,7 +175,7 @@ func (self *RemotesController) add() error {
175
175
self .c .Prompt (types.PromptOpts {
176
176
Title : self .c .Tr .NewRemoteUrl ,
177
177
HandleConfirm : func (remoteUrl string ) error {
178
- return self .addRemoteHelper (remoteName , remoteUrl )
178
+ return self .addRemoteHelper (remoteName , remoteUrl , "" )
179
179
},
180
180
})
181
181
@@ -223,6 +223,14 @@ func (self *RemotesController) addFork(baseRemote *models.Remote) error {
223
223
self .c .Prompt (types.PromptOpts {
224
224
Title : self .c .Tr .AddForkRemoteUsername ,
225
225
HandleConfirm : func (forkUsername string ) error {
226
+ branchToCheckout := ""
227
+
228
+ parts := strings .SplitN (forkUsername , ":" , 2 )
229
+ if len (parts ) == 2 {
230
+ forkUsername = parts [0 ]
231
+ branchToCheckout = parts [1 ]
232
+ }
233
+
226
234
self .c .Prompt (types.PromptOpts {
227
235
Title : self .c .Tr .NewRemoteName ,
228
236
InitialContent : forkUsername ,
@@ -236,7 +244,7 @@ func (self *RemotesController) addFork(baseRemote *models.Remote) error {
236
244
return err
237
245
}
238
246
239
- return self .addRemoteHelper (remoteName , remoteUrl )
247
+ return self .addRemoteHelper (remoteName , remoteUrl , branchToCheckout )
240
248
},
241
249
})
242
250
@@ -318,16 +326,22 @@ func (self *RemotesController) edit(remote *models.Remote) error {
318
326
}
319
327
320
328
func (self * RemotesController ) fetch (remote * models.Remote ) error {
329
+ return self .fetchAndCheckout (remote , "" )
330
+ }
331
+
332
+ func (self * RemotesController ) fetchAndCheckout (remote * models.Remote , branchName string ) error {
321
333
return self .c .WithInlineStatus (remote , types .ItemOperationFetching , context .REMOTES_CONTEXT_KEY , func (task gocui.Task ) error {
322
334
err := self .c .Git ().Sync .FetchRemote (task , remote .Name )
323
335
if err != nil {
324
336
return err
325
337
}
326
-
338
+ if branchName != "" {
339
+ err = self .c .Git ().Branch .New (branchName , remote .Name + "/" + branchName )
340
+ }
327
341
self .c .Refresh (types.RefreshOptions {
328
342
Scope : []types.RefreshableView {types .BRANCHES , types .REMOTES },
329
343
Mode : types .ASYNC ,
330
344
})
331
- return nil
345
+ return err
332
346
})
333
347
}
0 commit comments