在工作区或stdin中查看彩色增量diff,支持并排和自动寻呼机
cdiff的Python项目详细描述
cdiff
基于术语的工具,用于查看colored,incrementaldiff in agit/mercurial/svn 工作区或来自stdin,支持并排和自动寻呼机功能。要求 Python(>;=2.5.0)和less。
安装
使用setup.py安装
如果没有pip,也可以从源代码运行setup.py。
git clone https://github.com/ymattw/cdiff.git
cd cdiff
./setup.py install
使用自制软件安装
您也可以在Mac上安装自制程序。(多亏了@josa42, @bfontaine、@hivehand和@nijikon为自制贡献 Formula)。
brew install cdiff
直接下载
只需将cdiff.py保存到$PATH中的任何目录,即可 例如,$HOME/bin在我的$PATH中,所以我将脚本保存在那里并命名 作为cdiff。
curl -ksSL https://raw.github.com/ymattw/cdiff/master/cdiff.py > ~/bin/cdiff chmod +x ~/bin/cdiff
使用量
键入cdiff -h以显示用法:
$ cdiff -h Usage: cdiff [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' Note: Option parser will stop on first unknown option and pass them down to underneath revision control. Environment variable CDIFF_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 cdiff # view colored incremental diff cdiff -s # view side by side, use default text width 80 cdiff -s -w 90# use text width 90 other than default 80 cdiff -s -w 0# auto set text width based on terminal size cdiff -s file1 dir2 # view modification of given files/dirs only cdiff -s -w90 -- -U10 # pass '-U10' to underneath revision diff tool cdiff -s -w90 -U10 # '--' is optional as it's unknown to cdiff cdiff -s --cached # show git staged diff (git diff --cached) cdiff -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 cdiff -l # read log along with changes cdiff -ls # equivalent to cdiff -l -s, view side by side cdiff -ls -w90 # set text width 90 as well cdiff -ls file1 dir2 # see log with changes of given files/dirs only
环境变量CDIFF_OPTIONS可用于指定默认选项 将放在参数列表的开头,例如:
exportCDIFF_OPTIONS='-s -w0' cdiff foo # equivalent to "cdiff -s -w0 foo"
如果您更喜欢使用git cdiff这样的命令来触发 cdiff命令,您可以将可执行文件符号链接到一个名为git-cdiff 如下所示:
cdiff_dir=$(dirname $(which cdiff)) ln -s "${cdiff_dir}/cdiff""${cdiff_dir}/git-cdiff"
管道压差:
git log -p -2 | cdiff # view git log with changes of last 2 commits git show 15bfa | cdiff -s # view a given git commit, side by side svn diff -r1234 | cdiff -s # view svn diff comparing to given revision diff -u file1 file2 | cdiff # view diff between two files (note the '-u') diff -ur dir1 dir2 | cdiff # view diff between two dirs # View diff in a GitHub pull request, side by side curl https://github.com/ymattw/cdiff/pull/11.diff | cdiff -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. # cdiff -s < foo.patch
将输出重定向到另一个修补程序文件是安全的:
svn diff -r PREV | cdiff -s > my.patch
注释
CDIFF有以下已知问题:
- 不识别normaldiff,取决于filterdiff(patchutils) 阅读上下文
- 并排模式对宽字符有对齐问题
- 终端可能遇到了一个混乱的异常(键入reset可以修复它)
非常欢迎拉取请求,请确保您的更改可以通过单元 运行make test(必需的工具coverage可以进行测试和回归测试 使用pip install coverage安装。还要小心travis build 推完之后,确保它也通过了。
更改日志
版本1.0(2016-12-31)
- Use environment variable ^{tt13}$ 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 ^{tt21}$ now fits terminal size automatically
- Enable smooth horizontal scrolling with less option ^{tt22}$
版本0.9.4(2014-06-04)
- Respect the ^{tt23}$ 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 ^{tt24}$, ^{tt25}$ directly
版本0.9.1(2013-05-20)
- Use ^{tt26}$ to disable GIT_EXTERNAL_DIFF and diff.external which might break cdiff output
版本0.9(2013-03-23)
- Supports reading context diff via ^{tt16}$ (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 ^{tt28}$
- 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 ^{tt29}$ and ^{tt30}$
- Streamline reading large patch set
- New ^{tt31}$ 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)