def test_merge_head(tmpdir, Jagare): path = tmpdir.strpath git_dir = os.path.join(path, '.git') # `git merge` must be run in a work tree t_repo = JagareRepo.init(git_dir, work_path=path, bare=False) temp_repo.commit_something(git_dir, file_name='git_init') BR = 'br_test_merge' ret = t_repo.create_branch(BR, 'master') assert ret is True sha1 = t_repo.sha('master') temp_repo.commit_something(path, branch=BR) ret = Jagare.merge_head(path, BR) # sha2 = t_repo.sha('master') # assert sha1 != sha2 assert t_repo.sha(sha1) == sha1 assert ret.is_fastforward is True assert ret.fastforward_oid assert ret.is_uptodate is False
def test_merge_flow(tmpdir, no_ff, Jagare): path = tmpdir.mkdir('to').strpath from_repo_path = tmpdir.mkdir('from').strpath BR = 'br_test_merge' repo = temp_repo.create_temp_repo(path, is_bare=True) from_repo = repo.clone(from_repo_path, branch='master', bare=True) # commit more things to from_repo:BR ret = from_repo.create_branch(BR, 'master') assert ret is True temp_repo.commit_something(from_repo_path, branch=BR) # different repo: from -> to sha = Jagare.merge_flow(path, 'lh', '*****@*****.**', 'test_header', 'test_body', from_repo_path, BR, 'master', remote_name='hub/xxxproject', no_ff=no_ff) assert sha # same repo: from -> from sha = Jagare.merge_flow(from_repo_path, 'lh', '*****@*****.**', 'test_header', 'test_body', from_repo_path, BR, 'master', remote_name=None, no_ff=True) assert sha
def test_merge(tmpdir, no_ff, Jagare): path = tmpdir.strpath git_dir = os.path.join(path, '.git') # `git merge` must be run in a work tree t_repo = JagareRepo.init(git_dir, work_path=path, bare=False) temp_repo.commit_something(git_dir, file_name='git_init') BR = 'br_test_merge' ret = t_repo.create_branch(BR, 'master') assert ret is True sha1 = t_repo.sha('master') temp_repo.commit_something(path, branch=BR) ret = Jagare.merge(path, ref=BR, msg=None, commit_msg=None, no_ff=no_ff, env=None) sha2 = t_repo.sha('master') assert sha1 != sha2 assert t_repo.sha(sha1) == sha1 assert ret.stdout assert ret.stderr == '' assert ret.fullcmd assert ret.returncode == 0
def test_update_head(tmpdir, Jagare): path = tmpdir.strpath t_repo = temp_repo.create_temp_repo(path, is_bare=False) t_repo.create_branch('br_test_update_head', 'master') head_sha = t_repo.head.target.hex temp_repo.commit_something(path) assert t_repo.head.target.hex != head_sha ret = Jagare.update_head(path, 'br_test_update_head') assert ret is True assert t_repo.head.target.hex == head_sha
def test_update_ref(tmpdir, Jagare): path = tmpdir.strpath t_repo = temp_repo.create_temp_repo(path, is_bare=False) assert t_repo.head.name == 'refs/heads/master' head_sha = t_repo.head.target.hex temp_repo.commit_something(path) assert t_repo.head.target.hex != head_sha ret = Jagare.update_ref(path, 'refs/heads/master', head_sha) assert ret is True assert t_repo.head.target.hex == head_sha
def test_merge_flow(self): repo = Jagare(self.path) BR = 'br_test_merge' sha1 = repo.sha(BARE_REPO_OTHER_BRANCH) from_repo_path = self.get_temp_path() from_repo = repo.clone(from_repo_path, branch=BARE_REPO_OTHER_BRANCH, bare=True) ret = from_repo.create_branch(BR, BARE_REPO_OTHER_BRANCH) assert ret commit_something(from_repo_path, branch=BR) tmpdir = self.get_temp_path() # different repo sha = repo.merge_flow('lh', '*****@*****.**', 'test_header', 'test_body', tmpdir, from_repo_path, BR, BARE_REPO_OTHER_BRANCH, remote_name='hub/xxxproject', no_ff=True) assert sha sha2 = repo.sha(BARE_REPO_OTHER_BRANCH) assert sha1 != sha2 assert repo.sha(sha1) == sha1 # same repo tmpdir2 = self.get_temp_path() from_sha1 = from_repo.sha(BARE_REPO_OTHER_BRANCH) assert from_sha1 == sha1 sha = from_repo.merge_flow('lh', '*****@*****.**', 'test_header', 'test_body', tmpdir2, from_repo_path, BR, BARE_REPO_OTHER_BRANCH, no_ff=True) assert sha from_sha2 = from_repo.sha(BARE_REPO_OTHER_BRANCH) assert from_sha1 != from_sha2 assert from_repo.sha(from_sha1) == from_sha1
def test_merge_commits(self): repo = Jagare(self.path) BR = 'br_test_merge' path = self.get_temp_path() # repo has work-tree repo.clone(path, branch=BARE_REPO_OTHER_BRANCH) repo = Jagare(os.path.join(path, '.git')) ret = repo.create_branch(BR, BARE_REPO_OTHER_BRANCH) assert ret commit_something(path, branch=BR) repo.update_head(BARE_REPO_OTHER_BRANCH) merge_index = repo.merge_commits(repo.head.target.hex, BR) assert merge_index['has_conflicts'] is False
def test_merge_head(self): repo = Jagare(self.path) BR = 'br_test_merge' path = self.get_temp_path() # repo has work-tree repo.clone(path, branch=BARE_REPO_OTHER_BRANCH) repo = Jagare(os.path.join(path, '.git')) ret = repo.create_branch(BR, BARE_REPO_OTHER_BRANCH) assert ret commit_something(path, branch=BR) repo.update_head(BARE_REPO_OTHER_BRANCH) merge_result = repo.merge_head(BR) assert merge_result['is_fastforward']
def test_rev_list(tmpdir, Jagare): path = tmpdir.strpath repo = temp_repo.create_temp_repo(path, is_bare=True) from_sha = repo.sha('master') temp_repo.commit_something(path) ret = Jagare.rev_list(path, to_ref='master', from_ref=from_sha, file_path=None, skip=None, max_count=None, author=None, query=None, first_parent=None, since=None, no_merges=None) assert ret[0].committer assert ret[0].author assert ret[0].sha assert ret[0].type == 'commit'
def test_merge_commits(self): repo = Jagare(self.path) BR = 'br_test_merge' path = self.get_temp_path() # repo has work-tree repo.clone(path, branch=BARE_REPO_OTHER_BRANCH) repo = Jagare(os.path.join(path, '.git')) ret = repo.create_branch(BR, BARE_REPO_OTHER_BRANCH) assert ret commit_something(path, branch=BR) repo.update_head(BARE_REPO_OTHER_BRANCH) merge_index = repo.merge_commits(repo.head.target.hex, BR) assert merge_index['has_conflicts'] == False
def test_can_merge(self): repo = Jagare(self.path) BR = 'br_test_merge' from_repo_path = self.get_temp_path() from_repo = repo.clone(from_repo_path, branch=BARE_REPO_OTHER_BRANCH, bare=True) ret = from_repo.create_branch(BR, BARE_REPO_OTHER_BRANCH) assert ret commit_something(from_repo_path, branch=BR) tmpdir = self.get_temp_path() ret = repo.can_merge(tmpdir, from_repo_path, BR, BARE_REPO_OTHER_BRANCH, remote_name='hub/xxxproject') assert ret is True
def test_show_tree(tmpdir, Jagare): path = tmpdir.strpath repo = temp_repo.create_temp_repo(path, is_bare=True) # create a tree temp_repo.commit_something(path, file_name=os.path.join('test_tree', 'file')) ls = repo.ls_tree('master') trees = [item['sha'] for item in ls if item['type'] == 'tree'] assert trees for sha in trees: ret = Jagare.show(path, sha) assert ret.tree
def _merge(self, no_ff): repo = Jagare(self.path) BR = 'br_test_merge' path = self.get_temp_path() # repo has work-tree repo.clone(path, branch=BARE_REPO_OTHER_BRANCH) repo = Jagare(os.path.join(path, '.git')) ret = repo.create_branch(BR, BARE_REPO_OTHER_BRANCH) assert ret sha1 = repo.sha(BARE_REPO_OTHER_BRANCH) commit_something(path, branch=BR) repo.update_head(BARE_REPO_OTHER_BRANCH) ret = repo.merge(BR, no_ff=no_ff) sha2 = repo.sha(BARE_REPO_OTHER_BRANCH) assert sha1 != sha2 assert repo.sha(sha1) == sha1
def test_can_merge(tmpdir, Jagare): path = tmpdir.mkdir('to').strpath from_repo_path = tmpdir.mkdir('from').strpath BR = 'br_test_merge' repo = temp_repo.create_temp_repo(path, is_bare=True) from_repo = repo.clone(from_repo_path, branch='master', bare=True) # commit more things to from_repo:BR ret = from_repo.create_branch(BR, 'master') assert ret is True temp_repo.commit_something(from_repo_path, branch=BR) # can_merge ret = Jagare.can_merge(path, from_repo_path, BR, 'master', remote_name='hub/xxxproject') assert ret is True