diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2014-11-17 10:44:31 +0100 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2014-11-17 10:44:31 +0100 |
commit | 9780b7a0f39f66d6e1946a7d109fc49165b81d64 (patch) | |
tree | 614a4128ab5629594607ae2235dcb15567f64b85 | |
parent | 322db077a693a513e79577a0adf94c97fc2be347 (diff) | |
parent | 3a1e0d7117b9e4ea4be3ef4895e8b2b4937ff98a (diff) | |
download | gitpython-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.py | 4 | ||||
-rw-r--r-- | git/objects/commit.py | 6 | ||||
-rw-r--r-- | git/refs/log.py | 8 | ||||
-rw-r--r-- | git/refs/symbolic.py | 8 |
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 |