在工作区或stdin中查看彩色增量diff,支持并排和自动寻呼机
ydiff的Python项目详细描述
ydiff
基于术语的工具,用于查看colored,incrementaldiff in agit/mercurial/svn 工作区或来自stdin,与并排(类似于diff -y)和自动 寻呼机支持。需要python(>;=2.5.0)和less。
安装
使用setup.py安装
如果没有pip,也可以从源代码运行setup.py。
git clone https://github.com/ymattw/ydiff.git
cd ydiff
./setup.py install
使用自制软件安装
您也可以在Mac上安装自制程序。(多亏了@josa42, @bfontaine、@hivehand和@nijikon为自制贡献 Formula)。
brew install ydiff
直接下载
只需将ydiff.py保存到$PATH中的任何目录,即可 例如,$HOME/bin在我的$PATH中,所以我将脚本保存在那里并命名 作为ydiff。
curl -ksSL https://raw.github.com/ymattw/ydiff/master/ydiff.py > ~/bin/ydiff chmod +x ~/bin/ydiff
使用量
键入ydiff -h以显示用法:
$ ydiff -h Usage: ydiff [options] [file|dir ...] View colored, incremental diff in a workspace or from stdin, with side by side and auto pager support Options: --version show program's version number and exit -h, --help show this help message and exit -s, --side-by-side enable side-by-side mode -w N, --width=N set text width for side-by-side mode, 0 for auto detection, default is 80 -l, --log show log with changes from revision control -c M, --color=M colorize mode 'auto' (default), 'always', or 'never' -t N, --tab-width=N convert tab characters to this many spaces (default: 8) --wrap wrap long lines in side-by-side view Note: Option parser will stop on first unknown option and pass them down to underneath revision control. Environment variable YDIFF_OPTIONS may be used to specify default options that will be placed at the beginning of the argument list.
从git/mercurial/svn工作区中的本地修改读取diff(输出 例如git diff,svn diff):
cd proj-workspace ydiff # view colored incremental diff ydiff -s # view side by side, use default text width 80 ydiff -s -w 90# use text width 90 other than default 80 ydiff -s -w 0# auto set text width based on terminal size ydiff -s -w 0 --wrap # same as before, but also wrap long lines ydiff -s file1 dir2 # view modification of given files/dirs only ydiff -s -w90 --wrap -- -U10 # pass '-U10' to underneath revision diff tool ydiff -s -w90 --wrap -U10 # '--' is optional as it's unknown to ydiff ydiff -s --cached # show git staged diff (git diff --cached) ydiff -s -r1234 # show svn diff to revision 1234
在git/mercurial/svn工作区中读取包含更改的日志(例如 git log -p,svn log --diff,注意–diff选项是SVN 1.7.0中的新选项:
cd proj-workspace ydiff -l # read log along with changes ydiff -ls # equivalent to ydiff -l -s, view side by side ydiff -ls -w90 --wrap # set text width 90 and enable wrapping as well ydiff -ls file1 dir2 # see log with changes of given files/dirs only
环境变量YDIFF_OPTIONS可用于指定默认选项 将放在参数列表的开头,例如:
exportYDIFF_OPTIONS='-s -w0 --wrap' ydiff foo # equivalent to "ydiff -s -w0 --wrap foo"
如果您更喜欢使用git ydiff这样的命令来触发 使用ydiff命令,可以将可执行文件符号链接到名为^{tt16}的文件$ 如下所示:
ydiff_dir=$(dirname $(which ydiff)) ln -s "${ydiff_dir}/ydiff""${ydiff_dir}/git-ydiff"
管道压差:
git log -p -2 | ydiff # view git log with changes of last 2 commits git show 15bfa | ydiff -s # view a given git commit, side by side svn diff -r1234 | ydiff -s # view svn diff comparing to given revision diff -u file1 file2 | ydiff # view diff between two files (note the '-u') diff -ur dir1 dir2 | ydiff # view diff between two dirs # View diff in a GitHub pull request, side by side curl https://github.com/ymattw/ydiff/pull/11.diff | ydiff -s # View a patch file in unified or context format, the latter depends on # command `filterdiff` from package `patchutils` which is available in # major Linux distros and MacPorts. # ydiff -s < foo.patch
将输出重定向到另一个修补程序文件是安全的:
svn diff -r PREV | ydiff -s > my.patch
注释
ydiff有以下已知问题:
- 不识别normaldiff,取决于filterdiff(patchutils) 阅读上下文
- 并排模式对宽字符有对齐问题
- 终端可能遇到了一个混乱的异常(键入reset可以修复它)
非常欢迎拉取请求,请确保您的更改可以通过单元 运行make test(必需的工具coverage可以进行测试和回归测试 与pip install coverage一起安装。还要小心travis build 推完之后,确保它也通过了。
更改日志
版本1.1(2018-06-05)
- Rename from ^{tt21}$ to ^{tt8}$ to avoid binary name conflict on major distributions, ^{tt23}$ still works but will be deprepated soon
- New option ^{tt24}$ to wrap long lines in side-by-side view
版本1.0(2016-12-31)
- Use environment variable ^{tt23}$ to hold default options
版本0.9.8(2016-01-16)
- More robust parser to tolerate evil unified diff
版本0.9.7(2015-04-24)
- Fix unexpected side-by-side output for diff of diff
- Better color to work with solarized color scheme
版本0.9.6(2014-06-20)
- Fix TypeError exception in auto width logic
版本0.9.5(2014-06-19)
- Option ^{tt26}$ now fits terminal size automatically
- Enable smooth horizontal scrolling with less option ^{tt27}$
版本0.9.4(2014-06-04)
- Respect the ^{tt28}$ environment variable
- Support python 3.4
- Fix curl options in document
版本0.9.3(2013-09-28)
- Moved screenshots to ‘gh-pages’ branch
- Handle all keyboard interrupts more completely
- Explicitly set default encoding to utf-8
- Fixed broken output diff when I/O with filterdiff in nonblocking mode
版本0.9.2(2013-06-21)
- Enahanced option parser now pass unknown option to underneath revision control, user can use ^{tt29}$, ^{tt30}$ directly
版本0.9.1(2013-05-20)
- Use ^{tt31}$ to disable GIT_EXTERNAL_DIFF and diff.external which might break cdiff output
版本0.9(2013-03-23)
- Supports reading context diff via ^{tt17}$ (patchutils)
- Fixed a diff parser bug which misread git commit message as common line
- Lots of code refactor
版本0.8(2013-03-13)
- Parser is now robust enough to handle dangling headers and short patch
- PEP8 (with minor own flavors) and other code lint
- Change ‘Development Status’ to stable
版本0.7.1(2013-02-25)
- Handle ‘Binary files … differ’
- Document update for known issues
版本0.7(2013-02-23)
- Support reading diff or log for given files/dirs in workspace
- Support diff generated from ^{tt33}$
- Usage change: reading a patch and comparing two files need stdin redirect
版本0.6(2013-02-20)
- A few performance tuning and code clean up
- Add unit test cases with coverage 70%
- Show merge history in svn log
版本0.5.1(2013-02-19)
- Fixed incorrect yield on diff missing eof
- Fixed a bug in diff format probe
- Handle keyboard interrupt and large diffs in non-color mode
- Code clean up
版本0.5(2013-02-18)
- Support read output from ^{tt34}$ and ^{tt35}$
- Streamline reading large patch set
- New ^{tt36}$ option to read revision control diff log (thanks to Steven Myint)
版本0.4(2013-02-16)
- New option -c WHEN (–color WHEN) to support auto test
- Auto regression test now on Travis
版本0.3(2013-02-07)
- Support compare two files (wrapper of diff)
版本0.2(2013-02-06)
- Move cdiff.py to top dir for better meta info management
版本0.1(2013-02-05)
- New –version option
- setup.py now read version from source code
版本0.0.4(2013-02-04)
- Add CHANGES for history track and better versioning
版本0.0.3(2013-02-04)
- Publish on PyPI, supports read patch from file, pipe and diff output from revision tools (thanks to Steven Myint)