@@ -20,7 +20,12 @@ public final class Git: Shell {
2020        case  writeConfig( name:  String ,  value:  String ) 
2121        case  readConfig( name:  String ) 
2222        case  clone( url:  String ) 
23-         case  checkout( branch:  String ,  create:  Bool  =  false ) 
23+ 
24+         /// - parameter branch the name of the branch to checkout
25+         /// - parameter create whether to create a new branch or checkout an existing one
26+         /// - parameter tracking when creating a new branch, the name of the remote branch it should track
27+         case  checkout( branch:  String ,  create:  Bool  =  false ,  tracking:  String ?   =  nil ) 
28+ 
2429        case  log( numberOfCommits:  Int ?   =  nil ,  options:  [ String ] ?   =  nil ,  revisions:  String ?   =  nil ) 
2530        case  push( remote:  String ?   =  nil ,  branch:  String ?   =  nil ) 
2631        case  pull( remote:  String ?   =  nil ,  branch:  String ?   =  nil ,  rebase:  Bool  =  false ) 
@@ -69,12 +74,15 @@ public final class Git: Shell {
6974                } 
7075            case  . clone( let  url) : 
7176                params =  [ Command . clone. rawValue,  url] 
72-             case  . checkout( let  branch,  let  create) : 
77+             case  . checkout( let  branch,  let  create,   let  tracking ) : 
7378                params =  [ Command . checkout. rawValue] 
7479                if  create { 
7580                    params. append ( " -b " ) 
7681                } 
7782                params. append ( branch) 
83+                 if  let  tracking { 
84+                     params. append ( tracking) 
85+                 } 
7886            case  . log( let  numberOfCommits,  let  options,  let  revisions) : 
7987                params =  [ Command . log. rawValue] 
8088                if  let  numberOfCommits =  numberOfCommits { 
@@ -149,7 +157,7 @@ public final class Git: Shell {
149157                params =  [ Command . config. rawValue,  " --add " ,  name,  value] 
150158            case  . readConfig( let  name) : 
151159                params =  [ Command . config. rawValue,  " --get " ,  name] 
152-             case  . revList( let  branch ,  let  count,  let  revisions) : 
160+             case  . revList( _ ,  let  count,  let  revisions) : 
153161                params =  [ Command . revList. rawValue] 
154162                if  count { 
155163                    params. append ( " --count " ) 
0 commit comments