diff --git a/AUTHORS b/AUTHORS index a0aa707c7..e91fd78b1 100644 --- a/AUTHORS +++ b/AUTHORS @@ -33,5 +33,6 @@ Contributors are: -Steven Whitman -Stefan Stancu -César Izurieta +-Arthur Milchior Portions derived from other open source works and are clearly marked. diff --git a/git/repo/base.py b/git/repo/base.py index f35870803..e733e3bbb 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -1061,3 +1061,14 @@ def has_separate_working_tree(self): def __repr__(self): return '' % self.git_dir + + def currently_rebasing_on(self): + """ + :return: The commit which is currently being replayed while rebasing. + + None if we are not currently rebasing. + """ + rebase_head_file = osp.join(self.git_dir, "REBASE_HEAD") + if not osp.isfile(rebase_head_file): + return None + return self.commit(open(rebase_head_file, "rt").readline().strip()) diff --git a/git/test/test_repo.py b/git/test/test_repo.py index 0577bd589..c74d4ef41 100644 --- a/git/test/test_repo.py +++ b/git/test/test_repo.py @@ -1023,3 +1023,25 @@ def test_git_work_tree_env(self, rw_dir): self.assertEqual(r.working_dir, repo_dir) finally: os.environ = oldenv + + @with_rw_directory + def test_rebasing(self, rw_dir): + r = Repo.init(rw_dir) + fp = osp.join(rw_dir, 'hello.txt') + r.git.commit("--allow-empty", message="init",) + with open(fp, 'w') as fs: + fs.write("hello world") + r.git.add(Git.polish_url(fp)) + r.git.commit(message="English") + self.assertEqual(r.currently_rebasing_on(), None) + r.git.checkout("HEAD^1") + with open(fp, 'w') as fs: + fs.write("Hola Mundo") + r.git.add(Git.polish_url(fp)) + r.git.commit(message="Spanish") + commitSpanish = r.commit() + try: + r.git.rebase("master") + except GitCommandError: + pass + self.assertEqual(r.currently_rebasing_on(), commitSpanish)