SORU
10 Aralık 2009, PERŞEMBE


kullanım Gıt içinde diff dosyası için Winmerge

Bir şekilde git içinde Winmerge kullanmak Farklar var?

CEVAP
10 Aralık 2009, PERŞEMBE


Güncelleştirme Haziran 2015, 6 yıl sonra:

Ayrıntılı olarak "git mergetool winmerge", basit bir git config diff.tool winmerge yeterli olacaktır.

Git 2.5 (Q2, 2015) şimdi bir fark olarak Winmerge veya aracı birleştirme farkındadır!


Orijinal cevap (2009-2012)

(msysgit, 1.6.5, DOS oturumu)

İlk bölümü (winmerge kullanarak) açıklanan "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 Bir dizinde saklanan PATH: bir kısmı

#!/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

şimdi WinMerge başlatacak.
Eğer git diff WinMerge başlatmak istiyorsanız, sadece ayarlayın:

set GIT_EXTERNAL_DIFF=winmerge.sh

Ama gerçek katma değer ve aynı diff aracı kullanma yeteneği geliyortek bir toplu tüm farklılıklar mevcutbunları sırayla, diff aracı pencereleri kapatmak için zorlayarak sunmak yerine bir seferde bir dosya.

Haziran 2012 Güncelleme(2-ve-bir buçuk yıl sonra):

Dizinleri karşılaştırırken yerine dosya dosya yakında hazır olacak:
[ANNOUNCE] Git 1.7.11.rc1 bkz

"git difftool" alıştım "--dir-diff" harici diff araçları spawn seçenek olabiliriki dizin ağacı karşılaştırıniki geçici dizinleri doldurma sonra, bir andadış aracı bir kez bir dosya çifti başına bir örneğini çalıştırmak yerine.

"Patch difftool: teach difftool to handle directory diffs"cevap "Directory comparison of Git branches" daha fazla bilgi için.


Dizinler komut dosyası tarafından orijinal difftool (Aralık 2009)

his answer, script git-diffall.sh (ayrıca yolu koymak) Seba Illingworth bahseder sadece bunu yapabilir

#!/bin/sh
git diff --name-only "$@" | while read filename; do
    git difftool "$@" --no-prompt "$filename" &
done

Ama tek açarak çalışırnwindows içinndosyaları (eğer WinMerge -s seçeneği kullanmak için çalışırsanız, temp dosyaları difftool tarafından silinmiş olması nedeniyle çok erken çalışmaz)


O senin kendi iç farklılıkları incelemek için bir seçmeden önce bir fark ile dosyaların listesini gözden geçirmek için izin verir GitDiff.bat - power-diffing with GI yaklaşımı seviyorum.
Sadece DOS komutları kullanmak da orospuluk var

@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

Farklı dizinlerde aynı isimler ile dosyaları işlemek için yeterince sağlam değil, ama mümkün ve ne genel bir fikir veriyor:
Burada sadece bir WinMerge, dosyaların listesini içi anlaşmazlıkların olması ile açılır. Bir basit sonra inceler istediklerinizi tıklayabilirsinizESCkapat WinMerge-diff tüm oturum olacaktır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010
  • kremosakhaz

    kremosakhaz

    25 AĞUSTOS 2006
  • ravinderosahn

    ravinderosah

    20 Temmuz 2009