在工作区或stdin中查看彩色增量diff,支持并排和自动寻呼机

cdiff的Python项目详细描述


cdiff

Build status

基于术语的工具,用于查看coloredincrementaldiff in agit/mercurial/svn 工作区或来自stdin,支持并排自动寻呼机功能。要求 Python(>;=2.5.0)和less

defaultside by side

安装

使用pip安装

cdiff已经列在PyPI上,如果您有 工具。

pip install --upgrade cdiff

使用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 diffsvn 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 -psvn 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 推完之后,确保它也通过了。

另见

我有另一个工具coderev,它为代码生成并排的diff页面 从两个给定的文件或目录中查看,我发现扩展到 支持git-so-inventedcdiff。ANSI颜色标记的概念也来自 项目colordiff

更改日志

版本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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
MIME类型多部分/混合的java无对象DCH   Java Swing中单元格和列的间距   java为什么我不能使用For循环从集合中获取元素?   mysql Java餐厅计费系统   java MediaPlayer内存消耗   println Java添加的神秘输出:一些经过评估,一些经过打印   java我应该使用哪个对象?   PHP到Java论坛游戏集成   通过GeoNetwork上的java http post请求获取XML响应   java为什么类名与使用“==”的内部字符串比较冲突?   java反应。js如何定义自定义id,而不是在html中显示reactselect1value   java中的拼字数组   java如何使ScheduledExecutorService在其计划任务取消时自动终止   java查询未正确执行   IBatis+Java:检索HashMap   要读取的加密Java代码。txt文件并转换为二进制表示形式   Java Web Start应用程序自动加载   java Swing重写对象的paintComponent