diff options
| author | Carlos Martín Nieto <[email protected]> | 2015-04-03 14:45:38 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <[email protected]> | 2015-04-03 14:45:38 +0200 |
| commit | e021457f27654ea0f1ec41963c6da62c168be853 (patch) | |
| tree | 575954ced0bf280cec2159313278e6f9fca82217 /checkout.go | |
| parent | 1ba7e13a3a2fb4de3f5bd7a97f983a6a266a50c3 (diff) | |
| parent | c4b8861b34ead7b06986ea5711c2d9528628215f (diff) | |
Merge pull request #180 from arcamael/master
Add possibiliy of checkout on specific path
Diffstat (limited to 'checkout.go')
| -rw-r--r-- | checkout.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/checkout.go b/checkout.go index 6eb6098..9874d2b 100644 --- a/checkout.go +++ b/checkout.go @@ -38,6 +38,7 @@ type CheckoutOpts struct { FileMode os.FileMode // Default is 0644 or 0755 as dictated by blob FileOpenFlags int // Default is O_CREAT | O_TRUNC | O_WRONLY TargetDirectory string // Alternative checkout path to workdir + Paths []string } func checkoutOptionsFromC(c *C.git_checkout_options) CheckoutOpts { @@ -78,6 +79,11 @@ func populateCheckoutOpts(ptr *C.git_checkout_options, opts *CheckoutOpts) *C.gi if opts.TargetDirectory != "" { ptr.target_directory = C.CString(opts.TargetDirectory) } + if len(opts.Paths) > 0 { + ptr.paths.strings = makeCStringsFromStrings(opts.Paths) + ptr.paths.count = C.size_t(len(opts.Paths)) + } + return ptr } @@ -86,6 +92,9 @@ func freeCheckoutOpts(ptr *C.git_checkout_options) { return } C.free(unsafe.Pointer(ptr.target_directory)) + if ptr.paths.count > 0 { + freeStrarray(&ptr.paths) + } } // Updates files in the index and the working tree to match the content of @@ -141,4 +150,4 @@ func (v *Repository) CheckoutTree(tree *Tree, opts *CheckoutOpts) error { } return nil -} +}
\ No newline at end of file |
