aboutsummaryrefslogtreecommitdiffstats
path: root/options.go
diff options
context:
space:
mode:
Diffstat (limited to 'options.go')
-rw-r--r--options.go67
1 files changed, 48 insertions, 19 deletions
diff --git a/options.go b/options.go
index 120c472..d018356 100644
--- a/options.go
+++ b/options.go
@@ -9,36 +9,49 @@ import (
"srcd.works/go-git.v4/plumbing/transport"
)
+// SubmoduleRescursivity defines how depth will affect any submodule recursive
+// operation.
+type SubmoduleRescursivity uint
+
const (
- // DefaultRemoteName name of the default Remote, just like git command
+ // DefaultRemoteName name of the default Remote, just like git command.
DefaultRemoteName = "origin"
+
+ // NoRecurseSubmodules disables the recursion for a submodule operation.
+ NoRecurseSubmodules SubmoduleRescursivity = 0
+ // DefaultSubmoduleRecursionDepth allow recursion in a submodule operation.
+ DefaultSubmoduleRecursionDepth SubmoduleRescursivity = 10
)
var (
ErrMissingURL = errors.New("URL field is required")
)
-// CloneOptions describes how a clone should be performed
+// CloneOptions describes how a clone should be performed.
type CloneOptions struct {
- // The (possibly remote) repository URL to clone from
+ // The (possibly remote) repository URL to clone from.
URL string
- // Auth credentials, if required, to use with the remote repository
+ // Auth credentials, if required, to use with the remote repository.
Auth transport.AuthMethod
- // Name of the remote to be added, by default `origin`
+ // Name of the remote to be added, by default `origin`.
RemoteName string
- // Remote branch to clone
+ // Remote branch to clone.
ReferenceName plumbing.ReferenceName
- // Fetch only ReferenceName if true
+ // Fetch only ReferenceName if true.
SingleBranch bool
- // Limit fetching to the specified number of commits
+ // Limit fetching to the specified number of commits.
Depth int
+ // RecurseSubmodules after the clone is created, initialize all submodules
+ // within, using their default settings. This option is ignored if the
+ // cloned repository does not have a worktree.
+ RecurseSubmodules SubmoduleRescursivity
// Progress is where the human readable information sent by the server is
// stored, if nil nothing is stored and the capability (if supported)
- // no-progress, is sent to the server to avoid send this information
+ // no-progress, is sent to the server to avoid send this information.
Progress sideband.Progress
}
-// Validate validates the fields and sets the default values
+// Validate validates the fields and sets the default values.
func (o *CloneOptions) Validate() error {
if o.URL == "" {
return ErrMissingURL
@@ -55,7 +68,7 @@ func (o *CloneOptions) Validate() error {
return nil
}
-// PullOptions describes how a pull should be performed
+// PullOptions describes how a pull should be performed.
type PullOptions struct {
// Name of the remote to be pulled. If empty, uses the default.
RemoteName string
@@ -65,11 +78,14 @@ type PullOptions struct {
SingleBranch bool
// Limit fetching to the specified number of commits.
Depth int
- // Auth credentials, if required, to use with the remote repository
+ // Auth credentials, if required, to use with the remote repository.
Auth transport.AuthMethod
+ // RecurseSubmodules controls if new commits of all populated submodules
+ // should be fetched too.
+ RecurseSubmodules SubmoduleRescursivity
// Progress is where the human readable information sent by the server is
// stored, if nil nothing is stored and the capability (if supported)
- // no-progress, is sent to the server to avoid send this information
+ // no-progress, is sent to the server to avoid send this information.
Progress sideband.Progress
}
@@ -94,15 +110,15 @@ type FetchOptions struct {
// Depth limit fetching to the specified number of commits from the tip of
// each remote branch history.
Depth int
- // Auth credentials, if required, to use with the remote repository
+ // Auth credentials, if required, to use with the remote repository.
Auth transport.AuthMethod
// Progress is where the human readable information sent by the server is
// stored, if nil nothing is stored and the capability (if supported)
- // no-progress, is sent to the server to avoid send this information
+ // no-progress, is sent to the server to avoid send this information.
Progress sideband.Progress
}
-// Validate validates the fields and sets the default values
+// Validate validates the fields and sets the default values.
func (o *FetchOptions) Validate() error {
if o.RemoteName == "" {
o.RemoteName = DefaultRemoteName
@@ -117,18 +133,18 @@ func (o *FetchOptions) Validate() error {
return nil
}
-// PushOptions describes how a push should be performed
+// PushOptions describes how a push should be performed.
type PushOptions struct {
// RemoteName is the name of the remote to be pushed to.
RemoteName string
// RefSpecs specify what destination ref to update with what source
// object. A refspec with empty src can be used to delete a reference.
RefSpecs []config.RefSpec
- // Auth credentials, if required, to use with the remote repository
+ // Auth credentials, if required, to use with the remote repository.
Auth transport.AuthMethod
}
-// Validate validates the fields and sets the default values
+// Validate validates the fields and sets the default values.
func (o *PushOptions) Validate() error {
if o.RemoteName == "" {
o.RemoteName = DefaultRemoteName
@@ -148,3 +164,16 @@ func (o *PushOptions) Validate() error {
return nil
}
+
+// SubmoduleUpdateOptions describes how a submodule update should be performed.
+type SubmoduleUpdateOptions struct {
+ // Init, if true initializes the submodules recorded in the index.
+ Init bool
+ // NoFetch tell to the update command to not fetch new objects from the
+ // remote site.
+ NoFetch bool
+ // RecurseSubmodules the update is performed not only in the submodules of
+ // the current repository but also in any nested submodules inside those
+ // submodules (and so on). Until the SubmoduleRescursivity is reached.
+ RecurseSubmodules SubmoduleRescursivity
+}