8000 Merge pull request #317 from avinassh/dates-in-commits · battyone/GitPython@58c78e6 · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 58c78e6

Browse files
committed
Merge pull request gitpython-developers#317 from avinassh/dates-in-commits
Feature: Make commits with custom `author_date` and `commit_date` (closes gitpython-developers#315)
2 parents c3d33c1 + e306802 commit 58c78e6

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

git/index/base.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -922,7 +922,8 @@ def move(self, items, skip_errors=False, **kwargs):
922922

923923
return out
924924

925-
def commit(self, message, parent_commits=None, head=True, author=None, committer=None):
925+
def commit(self, message, parent_commits=None, head=True, author=None,
926+
committer=None, author_date=None, commit_date=None):
926927
"""Commit the current default index file, creating a commit object.
927928
For more information on the arguments, see tree.commit.
928929
@@ -932,7 +933,8 @@ def commit(self, message, parent_commits=None, head=True, author=None, committer
932933
run_commit_hook('pre-commit', self)
933934
tree = self.write_tree()
934935
rval = Commit.create_from_tree(self.repo, tree, message, parent_commits,
935-
head, author=author, committer=committer)
936+
head, author=author, committer=committer,
937+
author_date=author_date, commit_date=commit_date)
936938
run_commit_hook('post-commit', self)
937939
return rval
938940

git/objects/commit.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,8 @@ def _iter_from_process_or_stream(cls, repo, proc_or_stream):
266266
finalize_process(proc_or_stream)
267267

268268
@classmethod
269-
def create_from_tree(cls, repo, tree, message, parent_commits=None, head=False, author=None, committer=None):
269+
def create_from_tree(cls, repo, tree, message, parent_commits=None, head=False, author=None, committer=None,
270+
author_date=None, commit_date=None):
270271
"""Commit the given tree, creating a commit object.
271272
272273
:param repo: Repo object the commit should be part of
@@ -288,6 +289,8 @@ def create_from_tree(cls, repo, tree, message, parent_commits=None, head=False,
288289
configuration is used to obtain this value.
289290
:param committer: The name of the committer, optional. If unset, the
290291
repository configuration is used to obtain this value.
292+
:param author_date: The timestamp for the author field
293+
:param commit_date: The timestamp for the committer field
291294
292295
:return: Commit object representing the new commit
293296
@@ -327,14 +330,18 @@ def create_from_tree(cls, repo, tree, message, parent_commits=None, head=False,
327330 8000
offset = altzone
328331

329332
author_date_str = env.get(cls.env_author_date, '')
330-
if author_date_str:
333+
if author_date:
334+
author_time, author_offset = parse_date(author_date)
335+
elif author_date_str:
331336
author_time, author_offset = parse_date(author_date_str)
332337
else:
333338
author_time, author_offset = unix_time, offset
334339
# END set author time
335340

336341
committer_date_str = env.get(cls.env_committer_date, '')
337-
if committer_date_str:
342+
if commit_date:
343+
committer_time, committer_offset = parse_date(commit_date)
344+
elif committer_date_str:
338345
committer_time, committer_offset = parse_date(committer_date_str)
339346
else:
340347
committer_time, committer_offset = unix_time, offset

git/test/test_index.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,17 @@ def mixed_iterator():
470470
assert cur_head.commit == commit_actor
471471
assert cur_head.log()[-1].actor == my_committer
472472

473+
# commit with author_date and commit_date
474+
cur_commit = cur_head.commit
475+
commit_message = u"commit with dates by Avinash Sajjanshetty"
476+
477+
new_commit = index.commit(commit_message, author_date="2006-04-07T22:13:13", commit_date="2005-04-07T22:13:13")
478+
assert cur_commit != new_commit
479+
print(new_commit.authored_date, new_commit.committed_date)
480+
assert new_commit.message == commit_message
481+
assert new_commit.authored_date == 1144447993
482+
assert new_commit.committed_date == 1112911993
483+
473484
# same index, no parents
474485
commit_message = "index without parents"
475486
commit_no_parents = index.commit(commit_message, parent_commits=list(), head=True)

0 commit comments

Comments
 (0)
0