summaryrefslogtreecommitdiff
path: root/lib/git
diff options
context:
space:
mode:
Diffstat (limited to 'lib/git')
-rw-r--r--lib/git/cmd.py6
-rw-r--r--lib/git/remote.py62
2 files changed, 65 insertions, 3 deletions
diff --git a/lib/git/cmd.py b/lib/git/cmd.py
index d04a2bd0..485a1553 100644
--- a/lib/git/cmd.py
+++ b/lib/git/cmd.py
@@ -261,7 +261,9 @@ class Git(object):
such as in 'ls_files' to call 'ls-files'.
``args``
- is the list of arguments
+ is the list of arguments. If None is included, it will be pruned.
+ This allows your commands to call git more conveniently as None
+ is realized as non-existent
``kwargs``
is a dict of keyword arguments.
@@ -287,7 +289,7 @@ class Git(object):
# Prepare the argument list
opt_args = self.transform_kwargs(**kwargs)
- ext_args = self.__unpack_args(args)
+ ext_args = self.__unpack_args([a for a in args if a is not None])
args = opt_args + ext_args
call = ["git", dashify(method)]
diff --git a/lib/git/remote.py b/lib/git/remote.py
index 4ecae813..7febf2ee 100644
--- a/lib/git/remote.py
+++ b/lib/git/remote.py
@@ -185,7 +185,9 @@ class Remote(LazyMixin, Iterable):
def update(self, **kwargs):
"""
- Fetch all changes for this remote, including new branches
+ Fetch all changes for this remote, including new branches which will
+ be forced in ( in case your local remote branch is not part the new remote branches
+ ancestry anymore ).
``kwargs``
Additional arguments passed to git-remote update
@@ -196,6 +198,64 @@ class Remote(LazyMixin, Iterable):
self.repo.git.remote("update", self.name)
return self
+ def fetch(self, refspec=None, **kwargs):
+ """
+ Fetch the latest changes for this remote
+
+ ``refspec``
+ A "refspec" is used by fetch and push to describe the mapping
+ between remote ref and local ref. They are combined with a colon in
+ the format <src>:<dst>, preceded by an optional plus sign, +.
+ For example: git fetch $URL refs/heads/master:refs/heads/origin means
+ "grab the master branch head from the $URL and store it as my origin
+ branch head". And git push $URL refs/heads/master:refs/heads/to-upstream
+ means "publish my master branch head as to-upstream branch at $URL".
+ See also git-push(1).
+
+ Taken from the git manual
+
+ ``**kwargs``
+ Additional arguments to be passed to git-fetch
+
+ Returns
+ self
+ """
+ self.repo.git.fetch(self, refspec, **kwargs)
+ return self
+
+ def pull(self, refspec=None, **kwargs):
+ """
+ Pull changes from the given branch, being the same as a fetch followed
+ by a merge of branch with your local branch.
+
+ ``refspec``
+ see 'fetch' method
+
+ ``**kwargs``
+ Additional arguments to be passed to git-pull
+
+ Returns
+ self
+ """
+ self.repo.git.pull(self, refspec, **kwargs)
+ return self
+
+ def push(self, refspec=None, **kwargs):
+ """
+ Push changes from source branch in refspec to target branch in refspec.
+
+ ``refspec``
+ see 'fetch' method
+
+ ``**kwargs``
+ Additional arguments to be passed to git-push
+
+ Returns
+ self
+ """
+ self.repo.git.push(self, refspec, **kwargs)
+ return self
+
@property
def config_reader(self):
"""