diff options
author | 2007-12-31 19:30:27 +0200 | |
---|---|---|
committer | 2007-12-31 19:30:27 +0200 | |
commit | 895fd8b7ad0766f5c320befa221fa7e4cdacfc71 (patch) | |
tree | 0dc1cb73e60087be1a56cdf2a3f9d9a2433a5563 | |
parent | Don't always init repository when doing fast-import. (diff) | |
download | gitosis-gentoo-895fd8b7ad0766f5c320befa221fa7e4cdacfc71.tar.gz gitosis-gentoo-895fd8b7ad0766f5c320befa221fa7e4cdacfc71.tar.bz2 gitosis-gentoo-895fd8b7ad0766f5c320befa221fa7e4cdacfc71.zip |
Allow using fast_import for more than initial commit.
-rw-r--r-- | gitosis/repository.py | 16 | ||||
-rw-r--r-- | gitosis/test/test_repository.py | 28 |
2 files changed, 40 insertions, 4 deletions
diff --git a/gitosis/repository.py b/gitosis/repository.py index 18a789c..092e41d 100644 --- a/gitosis/repository.py +++ b/gitosis/repository.py @@ -63,6 +63,7 @@ def fast_import( commit_msg, committer, files, + parent=None, ): """ Create an initial commit. @@ -97,10 +98,17 @@ committer %(committer)s now data %(commit_msg_len)d %(commit_msg)s """ % dict( - committer=committer, - commit_msg_len=len(commit_msg), - commit_msg=commit_msg, - )) + committer=committer, + commit_msg_len=len(commit_msg), + commit_msg=commit_msg, + )) + if parent is not None: + assert not parent.startswith(':') + child.stdin.write("""\ +from %(parent)s +""" % dict( + parent=parent, + )) for index, (path, content) in enumerate(files): child.stdin.write('M 100644 :%d %s\n' % (index+1, path)) child.stdin.close() diff --git a/gitosis/test/test_repository.py b/gitosis/test/test_repository.py index b7338e5..6ce4129 100644 --- a/gitosis/test/test_repository.py +++ b/gitosis/test/test_repository.py @@ -313,3 +313,31 @@ exec git "$@" got = readFile(os.path.join(tmp, 'cookie')) eq(got, magic_cookie) +def test_fast_import_parent(): + tmp = maketemp() + path = os.path.join(tmp, 'repo.git') + repository.init(path=path) + repository.fast_import( + git_dir=path, + commit_msg='foo initial bar', + committer='Mr. Unit Test <unit.test@example.com>', + files=[ + ('foo', 'bar\n'), + ], + ) + repository.fast_import( + git_dir=path, + commit_msg='another', + committer='Sam One Else <sam@example.com>', + parent='refs/heads/master^0', + files=[ + ('quux', 'thud\n'), + ], + ) + export = os.path.join(tmp, 'export') + repository.export( + git_dir=path, + path=export, + ) + eq(sorted(os.listdir(export)), + sorted(['foo', 'quux'])) |