이 질문은 thread에있는 VonC의 의견을 기반으로합니다.Git의 자동 감지 기능이 스크립팅되었거나 일부 Git 실행 파일 내에 있습니까?
difftool 또는 mergetool에 대한 Git의 자동 감지가 스크립팅되었거나 일부 Git 실행 파일 내에 있습니까?
이 질문은 thread에있는 VonC의 의견을 기반으로합니다.Git의 자동 감지 기능이 스크립팅되었거나 일부 Git 실행 파일 내에 있습니까?
difftool 또는 mergetool에 대한 Git의 자동 감지가 스크립팅되었거나 일부 Git 실행 파일 내에 있습니까?
git-mergetool에서 스크립트되었습니다. 나는 이것을 나의 사본의 344 행에서 발견했다.
git mergetool man page에서 언급 한 바와 같이if test -z "$merge_tool"; then
merge_tool=`git config merge.tool`
if test -n "$merge_tool" && ! valid_tool "$merge_tool"; then
echo >&2 "git config option merge.tool set to unknown tool: $merge_tool"
echo >&2 "Resetting to default..."
unset merge_tool
fi
fi
if test -z "$merge_tool" ; then
if test -n "$DISPLAY"; then
merge_tool_candidates="kdiff3 tkdiff xxdiff meld gvimdiff"
if test -n "$GNOME_DESKTOP_SESSION_ID" ; then
merge_tool_candidates="meld $merge_tool_candidates"
fi
if test "$KDE_FULL_SESSION" = "true"; then
merge_tool_candidates="kdiff3 $merge_tool_candidates"
fi
fi
if echo "${VISUAL:-$EDITOR}" | grep 'emacs' > /dev/null 2>&1; then
merge_tool_candidates="$merge_tool_candidates emerge"
fi
(snip)
새로운 Git을 다운로드하고 소스를 볼 필요가있다. 내 자식은 컴파일 된 형식으로되어있어서 읽을 수 없습니다. @ 어떻게 Git의 소스 코드를 새로 다운로드하지 않고도 볼 수 있습니까? –
@Masi : git 자체가 컴파일되는 동안 mergetool과 같은 많은 명령이 실제로는 스크립트를 어딘가에 넣을 수 있습니다. 내 시스템에서 이들은 대부분/usr/lib/git-core/ – kwatford
,
--tool=<tool>
으로 지정한 병합 해상도 프로그램입니다.
유효 병합 도구는 kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffuse, tortoisemerge, opendiff 및 araxis입니다.
이제는 그 목록이 어디에서 유래 되었습니까?
<Git>/libexec/git-core/git-mergetool--lib
및 git config merge.tool
명령에 따라 선택을 수행하는 스크립트 자식 - mergetool에서 사용 :
사실, 이러한 도구 (및 사용자 지정 옵션) 스크립트에 사용됩니다.
그러나 valid_tool 자식 - mergetool() 함수를 기반으로 '자동 선택'의 비트가 - LIB : mergetool.<aMergeToolName>.cmd
을 기반으로
valid_tool()
그것은 get_merge_tool_cmd 사용은().
해당 설정이 git config 파일 중 하나에 남아 있으면 ... 해당 도구가 선택됩니다.
오른쪽 ... Jakub Narębski 그냥 git-mergetool--lib
스크립트의 오른쪽 부분을 지적 :
get_merge_tool() {
# Check if a merge tool has been configured
merge_tool=$(get_configured_merge_tool)
# Try to guess an appropriate merge tool if no tool has been set.
if test -z "$merge_tool"; then
merge_tool="$(guess_merge_tool)" || exit
fi
echo "$merge_tool"
}
guess_merge_tool()
(당신은 내가 그것을 찾을 수 있어야한다고 생각합니다! ..)는 다른 것들 중에서도 opendiff를 감지 할 수있는 다음과 같습니다 :
# Loop over each candidate and stop when a valid merge tool is found.
for i in $tools
do
merge_tool_path="$(translate_merge_tool_path "$i")"
if type "$merge_tool_path" > /dev/null 2>&1; then
echo "$i"
return 0
fi
done
에 저장됩니다. 실제로 'git-mergeool-lib'의 'guess_merge_tool' –
Jakub Narębski Git 스크립트의 오른쪽 섹션 : 완성 된 답변보기. – VonC