summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2014-11-17 10:44:31 +0100
committerSebastian Thiel <byronimo@gmail.com>2014-11-17 10:44:31 +0100
commit9780b7a0f39f66d6e1946a7d109fc49165b81d64 (patch)
tree614a4128ab5629594607ae2235dcb15567f64b85
parent322db077a693a513e79577a0adf94c97fc2be347 (diff)
parent3a1e0d7117b9e4ea4be3ef4895e8b2b4937ff98a (diff)
downloadgitpython-9780b7a0f39f66d6e1946a7d109fc49165b81d64.tar.gz
Merge branch '0.3' of https://github.com/firm1/GitPython into firm1-0.3
Fixed most pressing issues, more to come in next commit as we introduced a regression here. Conflicts: git/objects/commit.py git/refs/log.py git/refs/symbolic.py
-rw-r--r--git/index/base.py4
-rw-r--r--git/objects/commit.py6
-rw-r--r--git/refs/log.py8
-rw-r--r--git/refs/symbolic.py8
4 files changed, 15 insertions, 11 deletions
diff --git a/git/index/base.py b/git/index/base.py
index f11f4492..47c32dc6 100644
--- a/git/index/base.py
+++ b/git/index/base.py
@@ -867,7 +867,7 @@ class IndexFile(LazyMixin, diff.Diffable, Serializable):
return out
- def commit(self, message, parent_commits=None, head=True):
+ def commit(self, message, parent_commits=None, head=True, author=None, committer=None):
"""Commit the current default index file, creating a commit object.
For more information on the arguments, see tree.commit.
@@ -878,7 +878,7 @@ class IndexFile(LazyMixin, diff.Diffable, Serializable):
:return:
Commit object representing the new commit"""
tree = self.write_tree()
- return Commit.create_from_tree(self.repo, tree, message, parent_commits, head)
+ return Commit.create_from_tree(self.repo, tree, message, parent_commits, head, author=author, committer=committer)
@classmethod
def _flush_stdin_and_wait(cls, proc, ignore_stdout=False):
diff --git a/git/objects/commit.py b/git/objects/commit.py
index d778f2d7..9ec58c52 100644
--- a/git/objects/commit.py
+++ b/git/objects/commit.py
@@ -258,7 +258,7 @@ class Commit(base.Object, Iterable, Diffable, Traversable, Serializable):
finalize_process(proc_or_stream)
@classmethod
- def create_from_tree(cls, repo, tree, message, parent_commits=None, head=False):
+ def create_from_tree(cls, repo, tree, message, parent_commits=None, head=False, author=None, committer=None):
"""Commit the given tree, creating a commit object.
:param repo: Repo object the commit should be part of
@@ -303,8 +303,8 @@ class Commit(base.Object, Iterable, Diffable, Traversable, Serializable):
cr = repo.config_reader()
env = os.environ
- committer = Actor.committer(cr)
- author = Actor.author(cr)
+ committer = committer or Actor.committer(cr)
+ author = author or Actor.author(cr)
# PARSE THE DATES
unix_time = int(time())
diff --git a/git/refs/log.py b/git/refs/log.py
index 7249aec5..3bc42801 100644
--- a/git/refs/log.py
+++ b/git/refs/log.py
@@ -235,7 +235,8 @@ class RefLog(list, Serializable):
"""Append a new log entry to the revlog at filepath.
:param config_reader: configuration reader of the repository - used to obtain
- user information. May be None
+ user information. May also be an Actor instance identifying the committer directly.
+ May also be None
:param filepath: full path to the log file
:param oldbinsha: binary sha of the previous commit
:param newbinsha: binary sha of the current commit
@@ -249,8 +250,9 @@ class RefLog(list, Serializable):
raise ValueError("Shas need to be given in binary format")
#END handle sha type
assure_directory_exists(filepath, is_file=True)
- entry = RefLogEntry((bin_to_hex(oldbinsha), bin_to_hex(newbinsha), Actor.committer(config_reader), (int(time.time()), time.altzone), message))
-
+ committer = isinstance(config_reader, Actor) and config_reader or Actor.committer(config_reader)
+ entry = RefLogEntry((bin_to_hex(oldbinsha), bin_to_hex(newbinsha), committer, (int(time.time()), time.altzone), message))
+
lf = LockFile(filepath)
lf._obtain_lock_or_raise()
diff --git a/git/refs/symbolic.py b/git/refs/symbolic.py
index 9f9eb9f5..eb11627d 100644
--- a/git/refs/symbolic.py
+++ b/git/refs/symbolic.py
@@ -355,9 +355,11 @@ class SymbolicReference(object):
:param newbinsha: The sha the ref points to now. If None, our current commit sha
will be used
:return: added RefLogEntry instance"""
- return RefLog.append_entry(self.repo.config_reader(), RefLog.path(self), oldbinsha,
- (newbinsha is None and self.commit.binsha) or newbinsha,
- message)
+ # NOTE: we use the committer of the currently active commit - this should be
+ # correct. See https://github.com/gitpython-developers/GitPython/pull/146
+ return RefLog.append_entry(self.commit.committer, RefLog.path(self), oldbinsha,
+ (newbinsha is None and self.commit.binsha) or newbinsha,
+ message)
def log_entry(self, index):
""":return: RefLogEntry at the given index