@@ -266,7 +266,8 @@ def _iter_from_process_or_stream(cls, repo, proc_or_stream):
266266finalize_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,
327330offset = altzone
328331
329332author_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 :
331336author_time ,author_offset = parse_date (author_date_str )
332337else :
333338author_time ,author_offset = unix_time ,offset
334339# END set author time
335340
336341committer_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 :
338345committer_time ,committer_offset = parse_date (committer_date_str )
339346else :
340347committer_time ,committer_offset = unix_time ,offset