gitpython-developers / GitPython

GitPython is a python library used to interact with Git repositories.
http://gitpython.readthedocs.org
BSD 3-Clause "New" or "Revised" License
4.58k stars 902 forks source link

Feature request: More intuitive commands #901

Open caleb15 opened 5 years ago

caleb15 commented 5 years ago

repo.create_head(branch_name) would be more intuitive as repo.create_branch(branch_name) or repo.branch.create(branch_name)

Merging a branch would be more intuitive as repo.merge(from=branch_name) instead of

# prepare a merge
master = cloned_repo.heads.master                         # right-hand side is ahead of us, in the future
merge_base = cloned_repo.merge_base(new_branch, master)   # allwos for a three-way merge
cloned_repo.index.merge_tree(master, base=merge_base)     # write the merge result into index
cloned_repo.index.commit("Merged past and now into future ;)",
                         parent_commits=(new_branch.commit, master.commit))

It would be nice if you could do repo.head.sha in addition to repo.head.commit.hexsha

Because of the above I switched to repo.git.gitCommand to access the git commands directly.

Thanks for making the gitpython library!

Byron commented 5 years ago

I am glad GitPython is useful to you!

I agree that the current API is cumbersome to some extend, which is due to GitPython itself being mostly on the level of 'plumbing'. The terms mentioned above as well as the ease at which one can do certain operations are usually implemented in porcelain only.

As GitPython is in maintenance mode, all quality of life improvements must be submitted as a PR, but I think it's OK to keep this issue for ideas.