• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PyGitUp: A nicer `git pull`

原作者: [db:作者] 来自: Gitee 收藏 邀请

PyGitUp Version Build Status Coverage Status

PyGitUp is a Python port ofaanand/git-up. It not onlyfully covers the abilities of git-up and should be a drop-in replacement,but also extends it slightly.

Why use git up?

git pull has two problems:

  • It merges upstream changes by default, when it's really more polite to rebaseover them,unless your collaborators enjoy a commit graph that looks like bedhead.
  • It only updates the branch you're currently on, which means git push willshout at you for being behind on branches you don't particularly care aboutright now.

(https://github.com/aanand/git-up/)

Demonstration

http://i.imgur.com/EC3pvYu.gif

Why use the Python port?

I wasn't able to use the original git-up, because I didn't want to installa whole Ruby suite just for git-up and even with Ruby installed, there weresome problems running on my Windows machine. So, my reasons for writingand using this port are:

  1. Windows support.
  2. Written in Python ;)

How do I install it?

  1. Install git-up via pip: $ pip install git-up
  2. cd to your project's directory.
  3. Run git up and enjoy!

Note for Windows users:

See these instructionsfor installing pip, if you haven't already installed it. And don't forgetto either:

  • make your Python/Scripts and Python/Lib/site-packages writable foryou,
  • run pip with admin privileges
  • or use pip install --user git-up and add %APPDATA%/Python/Scriptsto %PATH%.

Otherwise pip will refuse to install git-up due to Access denied errors.

Python version compatibility:

Python 2.7, 3.4, 3.5 and 3.6 are supported :)

Options and Configuration

Command Line Arguments

  • git up -h shows a help message.
  • git up --quiet suppresses all output except for error messages.
  • git up --no-fetch skips fetching the remote and rebases all local branches.
  • git up --version shows the current version and optionally checks forupdates (see below).

Configuration

To configure PyGitUp, you can set options in your git config. Rungit config [--global] git-up.[name] [value] to set one of theseoptions:

  • git-up.bundler.check [true|*false*]: If set totrue,PyGitUp will check your app for any new bundled gemsand suggest a bundle install if necessary.
  • git-up.bundler.autoinstall [true|*false*]: If set totrue,PyGitUp will run bundle install automatically.Requires git-up.bundler.check to be true.
  • git-up.bundler.local [true|*false*]: If you've bundle package-edyour project gems, you can tell PyGitUp to run bundle install--local for you if it finds missing gems. Much faster than just a plainold bundle install. Don't worry if you're missing gems, it willbacktrack to bundle install if anything goes wrong. Make suregit-up.bundler.autoinstall is also set to true or it won't doanything.
  • git-up.bundler.rbenv [true|*false*]: If you have rbenv installed,you can tell PyGitUp to run rbenv rehash for you after it installsyour gems so any binaries will be available right away. Make sure git-up.bundler.autoinstall is also set to true or it won't do anything.
  • git-up.fetch.prune [*true*|false]: If set to true,PyGitUp will append the --pruneoption to git fetch andthus remove any remote tracking branches which no longer exist onthe remote (see git fetch--help).
  • git-up.fetch.all [true|*false*]: If set to false, PyGitUpwill only fetch remotes for which there is at least one localtracking branch. Setting this option will make git up always fetchfrom all remotes, which is useful if e.g. you use a remote to push toyour CI system but never check those branches out.
  • git-up.push.auto [true|*false*]: Push the current branch afterrebasing and fast-forwarding.
  • git-up.push.all [true|*false*]: Push all branches when auto-pushing.
  • git-up.push.tags [true|*false*]: Push tags when auto-pushing.
  • git-up.rebase.arguments [string]: If set, PyGitUp will usethis string as additional arguments when calling git rebase.Example: --preserve-merges to recreate merge commits in therebased branch.
  • git-up.rebase.auto [*true*|false]: If set to false,PyGitUp won't rebase your branches for you but notify you thatthey diverged. This can be useful if you have a lot of in-progresswork that you don't want to deal with at once, but still want toupdate other branches.
  • git-up.rebase.log-hook [cmd]: Runs cmd every time a branchis rebased or fast-forwarded, with the old head as $1 and the newhead as $2. This can be used to view logs or diffs of incomingchanges. Example:echo "changes on $1:"; git log --oneline --decorate $1..$2.
  • git-up.rebase.show-hashes [true|*false*]: If set to true,PyGitUp will show the hashes of the current commit (or the pointwhere the rebase starts) and the target commit like git pull does.

New in v1.0.0:

  • git-up.updates.check [*true*|false]: When running git up --version,it shows the version number and checks for updates. If you feeluncomfortable with it, just set it to false to turn off the checks.

Credits

The original git-up has been written by aanand:aanand/git-up/.

Changelog

v1.6.1 (2018-12-12)

v1.6.0 (2018-10-26)

v1.5.2 (2018-09-28)

  • Fixed version requirement for Click dependency (#82).

v1.5.1 (2018-09-13)

  • Fixed crash on Cygwin with rebase log hook enabled (#80).

v1.5.0 (2018-04-26)

v1.4.7 (2018-04-07)

  • Added shorthand commandline arguments (-V, -q, -h, see #73).

v1.4.6 (2017-12-19)

  • 3rd party dependencies have been updated (see #65).

v1.4.5 (2017-01-02)

  • Fixed problems when working with branches containing hash signs in their name(#55).
  • No longer installs a now unneeded script on pip install. Thanks @ekohlfor Pull Request #60.

v1.4.4 (2016-11-30)

  • Fixed a bug when working with git worktree (#58).

v1.4.3 (2016-11-22)

  • Fixed a bug with GitPython <= 2.0.8 (#56, #57).

v1.4.2 (2016-09-29)

  • Switched the command line argument parsing library (#53).

v1.4.1 (2016-08-02)

  • Include tests in PyPI distribution (#51).

v1.4.0 (2016-02-29)

  • 3rd party dependencies have been updated.
  • Dependencies on 3rd party libraries have been loosened to better interact with other installed packages.Thanks MaximilianR for Pull Request #45.
  • Added an command line argument to turn of fetching (--no-fetch). Thanks @buotofor Pull Request #46.
  • Don't show a stacktrace anymore when stashing fails (#35).
  • Fixed a bug that cuased problems with submodules if the submodule had unstashed changes/ Thanks@Javex for Pull Request #27.

v1.3.1 (2015-08-31)

  • Fixed a bug when showing the version on Python 3 #34.

v1.3.0 (2015-04-08)

v1.2.2 (2015-02-23)

  • Now updates submodules when called from git submodule foreach (#8).

v1.2.1 (2014-12-16)

  • Fixed a problem with setuptools 8.x (#19).
  • 3rd party dependencies have been updated

v1.2.0 (2014-12-10)

  • Added an option to show hashes when fast-forwarding/rebasing like git pulldoes (git-up.rebase.show-hashes).
  • Fixed a bug when having branches with both local tracking branches andremote tracking branches (#17).

v1.1.5 (2014-11-19)

  • 3rd party dependencies have been updated to fix a problem with a 3rd partylibrary (#18).

v1.1.4 (2014-04-18)

  • Fixed some typos in README and PyGitUp output.
  • 3rd party dependencies have been updated.

v1.1.3 (2014-03-23)

  • ahead of upstream messages are now cyan (see aanand/git-up#60).
  • Fixed problem when using % in the log hook (#11).

v1.1.2 (2013-10-08)

  • Fixed problems with the dependency declaration.

v1.1.1 (2013-10-07)

  • Fix for #7(AttributeError: 'GitUp' object has no attribute 'git') introduced byv1.1.0.

v1.1.0 (2013-10-07)

  • Prior to v1.1.0, PyGitUp tried to guess the upstream branch for a localbranch by looking for a branch on any remote with the same name. With v1.1.0,PyGitUp stops guessing and uses the upstream branch config instead.

    This by the way fixes issue #6(git up doesn't work with local only branches).

    Note:This change may break setups, where a local branch accidently hasthe same name as a remote branch without any tracking information set. Priorto v1.1.0, git up would still fetch and rebase from the remote branch.If you run into troubles with such a setup, setting tracking informationusing git branch -u <remote>/<remote branch> <local branch> should help.

  • 3rd party dependencies have been updated.

  • Allows to run git up --version from non-git dirs, too.

v1.0.0 (2013-09-05)

Finally PyGitUp reaches 1.0.0. You can consider it stable now :)

  • Added a comprehensive test suite, now with a coverage of about 90%.
  • Lots of code cleanup.
  • Added option -h to display a help screen (--help won't work, becausegit catches this option and handles it before PyGitUp can do).
  • Added option --version to show, what version of PyGitUp is running.Also checks for updates (can be disabled, see configuration).
  • Added option --quiet to be quiet and only display error messages.

v0.2.3 (2013-06-05)

  • Fixed issue #4 (uglyexception if remote branch has been deleted).

v0.2.2 (2013-05-04)

  • Fixed issue #3 (didn'treturn to previous branch).

v0.2.1 (2013-03-18)

  • Fixed problem: check-bundler.rb has not been installed when installing viaPyPI (problems with setup.py).

v0.2 (2013-03-18)

  • Incorporated aanand/git-up#41: Support for bundle install --local andrbenv rehash.
  • Fixed issue #1 (strangeoutput buffering when having multiple remotes to fetch from).
  • Some under-the-hood improvements.

v0.1 (2013-03-14)

  • Initial Release

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap