- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有没有办法在 git 中使用 Winmerge 来做 Diffs?
最佳答案
2015 年 6 月更新,6 年后:
如“git mergetool winmerge”中所述,一个简单的 git config diff.tool winmerge
就足够了。
Git 2.5+(2015 年第 2 季度)现在将 Winmerge 识别为差异或 merge 工具!
原始答案(2009-2012)
(msysgit,1.6.5,DOS session )
第一部分(使用 winmerge)在“How do I view ‘git diff’ output with visual diff program?”中描述
C:\myGitRepo>git config --replace --global diff.tool winmerge
C:\myGitRepo>git config --replace --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
C:\myGitRepo>git config --replace --global difftool.prompt false
将 winmerge.sh
存储在 PATH
的目录部分:
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"$PROGRAMFILES/WinMerge/WinMergeU.exe" -e -u -dl "Local" -dr "Remote" "$1" "$2"
(参见 WinMerge Command-line options)
git difftool
现在将启动 WinMerge。
如果您希望 git diff
启动 WinMerge,只需设置:
set GIT_EXTERNAL_DIFF=winmerge.sh
但真正的附加值来自于使用相同的差异工具在一批中显示所有差异的能力,而不是按顺序显示它们,迫使您一次关闭一个文件的差异工具窗口时间。
2012 年 6 月更新(两年半后):
比较目录而不是逐个文件将很快可用:
参见 [ANNOUNCE] Git 1.7.11.rc1 :
"
git difftool
" learned the "--dir-diff
" option to spawn external diff tools that can compare two directory hierarchies at a time after populating two temporary directories, instead of running an instance of the external tool once per a file pair.
有关详细信息,请参阅“ Patch difftool
: teach difftool
to handle directory diffs ”和答案“Directory comparison of Git branches”。
目录脚本的原始 difftool(2009 年 12 月)
作为Seba Illingworth在 his answer 中提到,脚本 git-diffall.sh(也放在路径中)可以做到这一点:
#!/bin/sh
git diff --name-only "$@" | while read filename; do
git difftool "$@" --no-prompt "$filename" &
done
但这只能通过为 n 个文件打开 n 个窗口来实现(如果您尝试使用 WinMerge 的 -s
选项,它将由于 difftool 过早删除临时文件而无法工作)
这就是为什么我喜欢 GitDiff.bat - power-diffing with GI 的方法,它允许您在选择一个文件以检查其内部差异之前查看有差异的文件列表。
我已将其调整为仅使用 DOS 命令
@echo off
setlocal
if "%1" == "-?" (
echo GitDiff - enables diffing of file lists, instead of having to serially
echo diff files without being able to go back to a previous file.
echo Command-line options are passed through to git diff.
echo If GIT_FOLDER_DIFF is set, it is used to diff the file lists. Default is windff.
goto END
)
if "%GIT_DIFF_COPY_FILES%"=="" (
rd /s /q %TEMP%\GitDiff
mkdir %TEMP%\GitDiff
mkdir %TEMP%\GitDiff\old
mkdir %TEMP%\GitDiff\new
REM This batch file will be called by git diff. This env var indicates whether it is
REM being called directly, or inside git diff
set GIT_DIFF_COPY_FILES=1
set GIT_DIFF_OLD_FILES=%TEMP%\GitDiff\old
set GIT_DIFF_NEW_FILES=%TEMP%\GitDiff\new
set GIT_EXTERNAL_DIFF=%~dp0\GitDiff.bat
echo Please wait and press q when you see "(END)" printed in reverse color...
call git diff %*
if defined GIT_FOLDER_DIFF (
REM This command using GIT_FOLDER_DIFF just does not work for some reason.
%GIT_FOLDER_DIFF% %TEMP%\GitDiff\old %TEMP%\GitDiff\new
goto END
)
if exist "%ProgramFiles%\Beyond Compare 2\BC2.exe" (
set GIT_FOLDER_DIFF="%ProgramFiles%\Beyond Compare 2\BC2.exe"
"%ProgramFiles%\Beyond Compare 2\BC2.exe" %TEMP%\GitDiff\old %TEMP%\GitDiff\new
goto END
)
"%ProgramFiles(x86)%\WinMerge\WinMergeU.exe" -r -e -dl "Local" -dr "Remote" %TEMP%\GitDiff\old %TEMP%\GitDiff\new
goto END
)
REM diff is called by git with 7 parameters:
REM path old-file old-hex old-mode new-file new-hex new-mode
copy %TEMP%\%~nx2 %GIT_DIFF_OLD_FILES%\%1
copy %5 %GIT_DIFF_NEW_FILES%
:END
它不够健壮,无法处理不同目录中具有相同名称的文件,但它可以让您大致了解可能发生的情况:
这里只会打开一个 WinMerge,其中包含内部差异的文件列表。您可以单击要检查的那些,然后一个简单的 ESC 将关闭所有 WinMerge-diff
session 。
关于git - 在 Git 中使用 Winmerge 来归档差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1881594/
我正在阅读许多 plist 并将它们显示在 UITableview 中。问题是,应用程序本身非常慢,我确实阅读了一些有关归档或序列化的内容,归档是否会使应用程序更快,或者如果我想使用大量数据,我应该尝
我用谷歌搜索并搜索了 SO,但没有直接的结果。看来我对 Apple 文档中的以下内容存在根本性的误解: An archive can store an arbitrarily complex obje
刚开始学习 iOS,我有一个非常基本的问题:归档/取消归档整个对象集合的正确方法是什么? 我了解到您首先需要在类上实现 NSCoder 协议(protocol)。假设我有一个可以正确归档和取消归档的类
所以这是我的问题。我正在尝试归档一个对象数组,当我取消归档它们时,尽管计数相同并且根对象内的对象相同,但它在未归档的数组中找不到指定的对象。 -(void)tableView:(UITableView
我需要归档一个由 ArrayController 控制的 NSMutableArray。我试过这个: [NSKeyedArchiver archivedDataWithRootObject:array
我想存档只包含 NSString 的字典,但是当我取消存档时,发生错误: [NSKeyedUnarchiver initForReadingWithData:]: non-keyed archive
我想存档每个构建的构建日志,例如到数据库。我知道如何归档工件,但我没有在构建日志中看到任何明显的内容。 最佳答案 我想您需要在归档之前结束您的工作。以下是一个 Groovy 脚本,它使用不同的方法来获
因此,我正在尝试将我的 iPhone 应用程序存档以进行临时测试,但我遇到了一些奇怪的情况。当我归档它时,在它显示归档类型的顶部,由于某种原因,它显示“Mac 应用程序归档”而不是通常的“iOS 应用
我正在使用 java Spring 和 spring data for mongodb。 我有一个集合,需要仅包含过去 3 个月的文档,但所有文档都应以某种方式保存(也许导出到文件?)。我正在寻找解决
我的应用程序使用了一个我插入的附加项目,我链接它然后使用以下代码导入它: #import 如果我正常运行应用程序,应用程序工作正常,但如果我按下存档按钮,上面报告的代码行就会出错。它说:找不到 SB
我有多个表。如表 1、表 2、表 3 等 需要什么: 1. 从表 1 中获取特定行。 (例如:id = 203) 2. 从 table2 中获取与 id 203 相关的所有值(例如:1,2,3,4,5
我正在尝试使用 Xcode 4.3.2 将我的应用存档到一个 .ipa 文件中以发送到应用商店,但在尝试存档时出现此错误: 'KKGridView/KKGridView.h' file not fou
这个问题在这里已经有了答案: Find and xargs to correctly handle filenames with spaces in their names (3 个答案) 关闭 3
我正在创建一个在线订单系统,用于定期销售商品(蔬菜盒送货上门)。我有一个“订单”模型(简化)如下: class BoxOrder(models.Model): customer = model
我已经检查过我的应用程序产品大小约为 10MB,但是当我构建它进行归档时,它显示 Appstore 大小为 20MB,即它几乎翻了一番。但是当我在文件夹中看到存档时,它的大小仍然是 10MB,我不知道
我使用的是 Mercurial 1.7.2。在 Windows 上,我想提取指定更改集中的所有文件(在我的案例提示中)。这样我就可以只将我已更改的文件上传到我的网络服务器。 如果我想获取整个存储库的未
我正在为使用 iOS 6 的 iPad 项目开发 Objective-C 代码库。 在我将类“ClassA”的名称重构为“ClassB”之后,我发现以下测试失败了: NSData *encodedOb
我的 Xcode 项目能够在模拟器上成功构建和运行,但是当我尝试将其存档时出现一个问题,提示该项目无法导入桥接 header 。 这是在模拟器上运行的图像应用。 现在,当我尝试将其存档到通用 IOS
我是 IOS 新手。我已经开发了一个 IOS 应用程序,现在我想在 iTunes 上发布这个应用程序。我已经创建了证书、应用程序 ID,然后是临时配置文件。我已成功将此添加到“build设置”的“代码
我有一个文件,其中包含我想用 tar 归档的文件列表。我们称之为 mylist.txt 它包含: file1.txt file2.txt ... file10.txt 有没有办法可以发出以 mylis
我是一名优秀的程序员,十分优秀!