From 80044e1655266ad30fe0e1c0f3ff4803a95d026e Mon Sep 17 00:00:00 2001 From: Guido Günther Date: Mon, 6 Feb 2017 08:52:24 +0100 Subject: GitRepository: shorten reflog message Closes: #854333 Thanks: Chris Lamb for the report --- gbp/git/repository.py | 2 +- tests/28_test_gbp_git_repository_commit_dir.py | 42 ++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tests/28_test_gbp_git_repository_commit_dir.py diff --git a/gbp/git/repository.py b/gbp/git/repository.py index c9456a71..75f2ebc7 100644 --- a/gbp/git/repository.py +++ b/gbp/git/repository.py @@ -1530,7 +1530,7 @@ class GitRepository(object): if not commit: raise GitRepositoryError("Failed to commit tree") self.update_ref("refs/heads/%s" % branch, commit, cur, - msg="gbp: %s" % msg) + msg="gbp: %s" % msg.split('\n')[0]) return commit def commit_tree(self, tree, msg, parents, author={}, committer={}): diff --git a/tests/28_test_gbp_git_repository_commit_dir.py b/tests/28_test_gbp_git_repository_commit_dir.py new file mode 100644 index 00000000..67d47500 --- /dev/null +++ b/tests/28_test_gbp_git_repository_commit_dir.py @@ -0,0 +1,42 @@ +# vim: set fileencoding=utf-8 : + +import os + +from . testutils import DebianGitTestRepo +from gbp.git.repository import GitRepositoryError + + +class TestGitRepositoryCommitDir(DebianGitTestRepo): + def setUp(self): + DebianGitTestRepo.setUp(self) + self.content = os.path.join(str(self.tmpdir), 'new') + os.mkdir(self.content) + with open(os.path.join(self.content, 'file1'), 'w') as f: + f.write('content1') + + def test_simple(self): + self.repo.commit_dir(self.content, + 'new content', + 'master', + create_missing_branch=True) + self.assertEquals(self.repo.show('master:file1'), 'content1') + + def test_long_reflog(self): + """Make sure we fail on onverly long msg resulting in an + overly long reflog enry""" + with self.assertRaises(GitRepositoryError): + self.repo.commit_dir(self.content, + 'foo' * 100000, + 'master', + create_missing_branch=True) + + def test_long_msg_854333(self): + """Make sure we shorten the reflog entry properly""" + self.repo.commit_dir(self.content, + 'foo\n' * 100000, + 'master', + create_missing_branch=True) + self.assertEquals(self.repo.show('master:file1'), 'content1') + out, dummy, ret = self.repo._git_inout('reflog', []) + self.assertEquals(ret, 0) + self.assertIn('HEAD@{0}: gbp: foo\n', out) -- cgit v1.2.3