문제

사용하려고합니다 Araxis 합병 MSYSGIT 용 Diff / Merge 도구로.

그물에서 몇 가지 자원을 찾았습니다.

  • araxis 사이트, 그들은 "쉬운"방법을 언급하지만, 그것은 내 배포판의 일부가 아닌 실행 파일 (araxisgitdiff.exe 및 araxisgitmerge.exe)을 의미합니다.
  • 나는 또한 몇 가지 정보를 찾았습니다 기구 루, 그러나 실제 정보 Re : araxis는 기껏해야 드문 일이므로 그로부터 아무것도 만들 수 없었습니다.
  • 마지막으로, 나이가 많은 정보가있었습니다 stackoverflow 게시물, 그러나 제안 된 방법은 나에게 효과가 없습니다. 그 특정 정보는 OS X를 향해 준비되었습니다. 나는 가능한 한 최선을 다했지만 성공하지 못했습니다.

내가 만들었다 /bin/git-diff-driver.sh

#!/bin/sh

"/c/Program Files/Araxis/Araxis Merge/compare.exe" -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5"

그리고 편집 gitconfig

[merge]
    tool = araxismerge
[mergetool "araxismerge"]
    cmd = "/c/Program Files/Araxis/Araxis Merge/compare.exe" -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED
[diff]
    external = "/bin/git-diff-driver.sh"

그리고 내가 얻는 유일한 결과는 다음과 같습니다.

$ git diff head^ 헤드
외부 Diff는 PowerEditor/src/notepad_plus.cpp에서 정차하여 죽었다.


편집하다:

나는 또한 이름이 지정된 exe로 시도했습니다 "c:/Program Files/Araxis/Araxis Merge/compare.exe" 동일한 결과로 답변 중 하나가 제안한대로.


편집하다:

Tortoisegit을 사용하면 쉽게 설정할 수 있다는 것을 알았지 만 Diff가 명령 줄에서 호출 될 때 Diff가 병합 도구로 Araxis를 설정하는 방법에 대한 표시를 제공하지 않는 것 같습니다.


편집하다:

따라서 문제는 다음과 같습니다. Araxis 합병을 성공적으로 사용하여 Msysgit과 Diff와 병합되는 사람이 있습니까? 그렇다면 어떻게합니까?

도움이 되었습니까?

해결책

'git diff'를 원한다면 항상 araxis를 사용하려면 도움말 파일에서 지침을 사용할 수 있지만, 명령 줄에서 평소와 같이 'git diff'를 사용하려면 'git diff'를 사용하려면 'git difftool'을 사용하려는 경우 Araxis Gui.

git config에 다음을 추가 해보십시오 ::

[difftool "araxis"]
    path = "/c/Program Files/Araxis/Araxis Merge/compare.exe"
    renames = true
    trustExitCode = true
[diff]
    tool = araxis
    stat = true
[mergetool "araxismergetool"]
    cmd = 'C:\\Program Files\\Araxis\\Araxis Merge\\araxisgitmerge.exe' "$REMOTE" "$BASE" "$PWD/$LOCAL" "$PWD/$MERGED"
    trustExitCode = false
[mergetool]
    keepBackup = false
[merge]
    tool = araxismergetool
    stat = true

다른 팁

Araxis의 문서가 업데이트되었습니다. http://www.araxis.com/merge/documentation-windows/integrating-with-other-application#git

수정없이 표시된 구성을 사용할 수 있습니다.

맞습니다 ... MSYSGIT 버전 1.6.3.2.1299. Gee46C, DOS 또는 GIT BASH에 따라 ARAXIS MERGE 2009, v2009.3713에 대한 평가 라이센스와 함께 작동했습니다.

접근 방식은 새로운 것을 사용하는 것입니다 git difftool 그리고 git mergetool, 평범한 차이 대신.

먼저 Diff 및 병합 도구에 대한 스크립트를 설정하겠습니다.

C:\>git config --global diff.tool adifftool
C:\>git config --global diff.external git-difftool--helper
C:\>git config --global difftool.adifftool.cmd "difftool.sh \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
C:\>git config --global difftool.prompt false

메모:

  • git 스크립트로 diff.external을 설정함으로써 git-difftool--helper, 나는 입력 할 때에도 difftool을 사용할 것입니다.git diff'.
  • 통과하는 것을 잊지 마십시오 $MERGED Difftool 스크립트에 : 파일의 실제 이름이 다른 유일한 변수입니다. $LOCAL 그리고 $REMOTE 임시 이름입니다.

Merge 도구의 경우 다음 전역 값을 설정합니다.

C:\>git config --global merge.tool amergetool
C:\>git config --global mergetool.amergetool.cmd "mergetool.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
C:\>git config --global mergetool.prompt false

이러한 도구를 일부 쉘 스크립트로 설정하면 해당 스크립트 내에서 도구를 전환 할 수 있습니다.
또 다른 접근법은 도구의 이름을 지정하는 것입니다 (mergetool.araxis.cmd, mergetool.winmerge.cmd, ...) 및 올바른 도구를 diff.tool 또는 merge.tool 환경.

만들다 difftool.sh 그리고 mergetool.sh 글로벌 환경 변수에서 참조 된 디렉토리에서 PATH. 그들은 DOS에서도 일할 것입니다 (그리고 그들은 sh - 쉘- 스크립트)

difftool.sh

#!/bin/sh
echo Launching Araxis Merge.exe: $3
t1="'$3 (from)'"
t2="'(to)'"
"C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -nowait -2 -title1:${t1} -title2:${t2} "$1" "$2" 

메모:

  • -title1을 가질 수 없음 : "공간이있는 사람"... 공간이없는 제목 만 작동합니다.titleN' 옵션.
    알았어요! 제목 값을 직접 전달할 수 없습니다 -title 옵션, 로컬 변수로 설정해야합니다. "' '" 따옴표 조합 (이중 인용문은 쉘 스크립트 실행 중에 사라지고 간단한 따옴표를 남겨두고 제목 내의 공백을 허용합니다!)
  • $3 Diff 목적으로 임시 파일 이름이 아니라 실제 이름을 나타냅니다. 따라서 사용 $3title1 공간이있는 옵션.
  • git diff HEAD^ HEAD DOS 세션에서는 작동하지 않습니다 git diff "HEAD^" HEAD 일 것이다.

grgetool.sh

#!/bin/sh

# Passing the following parameters to mergetool:
#  local base remote merge_result

alocal=$1
base=$2
remote=$3
result=$4

t1="'$4 (current branch)'"
t2="'(common ancestor)'"
t3="'(to be merged)'"

if [ -f $base ]
then
    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result" 
else
    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$result" "$remote" "$result" 
fi

여러 파일이 관련 될 때 해당 스크립트가 제대로 작동하는지 확신하지 못합니다 (여러 차이, 여러 파일이 병합 될 수 있음).
방금 테스트 한 것 : 작동하고 Araxis Compare.exe는 파일 당 하나의 탭을 열어 Diff 또는 병합을합니다.
시도해보고 알려주세요;)

.gitconfig에서 탈출하는 데 조금 더 조심해야한다고 생각합니다.

불행히도, 구성 변수가 확장되고 평가되는 방식으로 인해 문자열은 유효한 쉘 명령이어야하며 'GIT Config'가 빠져 나와야합니다.

다음과 같은 것을 시도하십시오.

[mergetool "araxismerge"]
    cmd = \"/c/Program Files/Araxis/Araxis Merge/compare.exe\" -3 -merge -wait \"$LOCAL\" \"$BASE\" \"$REMOTE\" \"$MERGED\"

그렇습니다. 아주 예쁘지 않습니다. 사용하는 경우 중 하나입니다 git config 실제로 직접 더 쉽습니다.

git config --global mergetool.araxismerge.cmd '"/c/Program Files/Araxis/Araxis Merge/compare.exe" -3 -merge -wait "$LOCAL" "$BASE" "$REMOTE" "$MERGED"'

나는이 문제로 꽤 오랫동안 어려움을 겪었고, 이제는 마침내 제안 된 모든 더러운 해킹 (중간 쉘 스크립트와 같은)이 다소 불필요하다고 말할 수 있습니다. 모든 최신 버전의 MSYSGIT (1.6.4)가 Araxis Merge (2008 년)를 지원하는 모든 버전입니다. 내부적으로 "araxis"라고 불리는 것은 놀라운 일이 아닙니다. 따라서 필요한 것은 설정하는 것입니다

[merge]
    tool = araxis

당신의 .gitconfig. 또한 경로 환경에 araxis 폴더를 포함시켜야합니다 (MSYSGIT 찾기. Compare.exe).

좋은 측정을 위해, "araxis"grgetool과 관련된 다른 git 설정은 구성 할 수있었습니다 (특히이 페이지의 일부 사람들과 마찬가지로 그 이름을 정확하게 선택하면) 모두를 제거해야합니다. 여기에는 아래의 모든 것이 포함됩니다 [mergetool "araxis"] 부분. 모든 구성 (시스템, 글로벌 및 리포지토리)에서 제거해야합니다. 그렇지 않으면 정상적인 "내부 도구"동작을 방해 할 수 있습니다.

어쨌든 Msysgit가 Araxis 병합을 시작하는 방법에 관심이 있거나 상자에서 다른기구가 무엇을 지원하는지 궁금해하는 경우, 볼 수있는 곳은 \share\git-gui\lib\mergetool.tcl MSYSGIT 설치 폴더의 스크립트.

추신. 구성하여 경로 환경 변수 설정을 피할 수 있습니다. mergetool.araxis.path 안에 .gitconfig. 개인적으로 나는 그렇게하지 않았다.

  1. 어쨌든 명령 줄에서 araxis 병합을 사용합니다.
  2. 디렉토리 경로 지정 .gitconfig (특히 좋아요 "C:\Program Files\Araxis\Araxis Merge\", 공간이 포함 된, 여기에는 msysgit을 괴롭히는 백 슬래시/포워드 슬래시 문제가 발생하기 쉽기 때문에 올바르게 수행하기가 어려울 수 있습니다.

pps. 위의 모든 내용은 Araxis를 Difftool로 만드는데도 적용됩니다. 즉, 추가해야합니다

[diff]
    tool = araxis

그리고 다른 것을 제거하십시오 [difftool "araxis"] 섹션, 구성에있는 경우 (경로를 설정하는 것을 잊지 마십시오) 섹션.

당신은 다음을 따라갈 수 있습니다 Diffmerge에 대한 내 대답에서 언급 된 스크립트 (창의 용) 그리고 그것이 작동하는지 확인하십시오.

실행 가능한 경로는 다음과 같이 더 잘 표현 될 수 있습니다.

#!/bin/sh

"C:/Program Files/Araxis/Araxis Merge/compare.exe" -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5"

내가 "간단히"하는 것을 발견 한 한 가지 방법은 설치하는 것입니다. 거북이 Diff / Merge 도구를 Tortoisegit 옵션으로 설정하십시오.
그러나 명령 줄과 차이를 원한다면이 문제는 문제를 해결하지 못합니다.

맞춤형 git에 물린/합병에 물린 이후로, 나는 이것을 한 번에 한 번에 고정 시키려고 노력할 것이라고 생각했습니다. 나는 Araxismerge가 시작된 시점에 도달했지만 탭의 제목이 없었습니다. 그래서 독자를위한 운동으로 남아있을 것입니다 :)

관찰 및 의견 :

  • 나는 araxismerge가 없었기 때문에 그것을 다운로드하고 그것을 시도하기 위해 무료 30 일 평가 라이센스를 받았습니다. 이 버전 (7.0은 보이는 것 같습니다)은 araxisgitdiff.exe와 함께 제공되며 작품을 보내는 지침과의 링크. 옵션 #1 : 업그레이드 araxis merge입니다.
  • CMD.exe에서 일하고 있기 때문에 'Git Diff Head Head^'는 작동하지 않습니다. '^'은 'git diff head "head^"'으로 탈출해야합니다.
  • 내 자신의 작업의 경우 KDIFF3을 Windows에서 무료 교체로 사용하여 합리적으로 잘 작동합니다 (기본적으로 GIT가 지원하는 데 도움이됩니다).

git-diff-driver.sh로 시작하여 나에게 같은 오류가 발생했습니다. 스크립트를 '에코'만 포함하도록 변경 한 후에는 변경되지 않았습니다. 따라서 오류는 스크립트의 내용과 독립적입니다.

그런 다음 .gitconfig에서 '/bin'부분을 제거하여 선이됩니다.

external = "git-diff-driver.sh"

... 그리고 이것은 작동하기 시작했습니다. 합병을 시작했지만 '(repo)'부분을 올바르게 피하지 않습니다. 해결 방법으로 타이틀없이 작동했습니다.

#!/bin/sh
"/c/Program Files/Araxis/Araxis Merge/compare.exe" -max "$2" "$5"

행운을 빕니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top