回答
它在git-mergetool中編寫腳本。我在我的副本的第344行發現了這一點。
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採用編譯格式,因此無法讀取它。 @如何在不下載新的源代碼的情況下查看Git的源代碼? – 2009-07-04 00:12:24
@Masi:當編譯git本身時,許多命令(如mergetool)實際上只是隱藏在某處的腳本。在我的系統上,這些主要存儲在/ usr/lib/git-core/ – kwatford 2009-07-04 01:58:50
--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
命令選擇使用。
但有一點基礎上,valid_tool的混帳合併工具()函數「自動選擇」的 - lib目錄下:
valid_tool()
它採用get_merge_tool_cmd(),它是基於mergetool.<aMergeToolName>.cmd
。
如果該設置保留在其中一個git配置文件中,該工具將被選中。
右... 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
- 1. git未檢測到某些文件中的更改
- 2. Git只拉某些文件
- 3. git-過濾某些文件
- 4. 想讓Git後收到鉤來檢測某些文件類型
- 5. 是否有可能讓Git自動執行某些種類合併的決議相沖突
- 6. 在git中檢測「文件」的刪除
- 7. 在git init上執行腳本
- 8. 是否可以自動顯示所有文件的git註釋?
- 9. 自動將可執行文件追加到腳本文件中
- 10. git可執行文件的別名
- 11. 在Jenkins中是否有測試腳本/可執行文件的標準方法?
- 12. 檢查詹金斯Groovy腳本中是否存在Git分支
- 13. 檢查git狀態在Powershell腳本中是否乾淨
- 14. Shell腳本來檢查文件的類型是否可執行文件
- 15. Git:使用可執行文件
- 16. 檢測Git中文件的更改
- 17. git:只提取某些文件
- 18. 告訴GIT忽略某些文件
- 19. GIT&Laravel停止某些文件
- 20. 'git pull'時排除某些文件
- 21. 是否可以使用Microsoft Flow自動執行Python腳本?
- 22. 承諾中的某些可執行文件未被執行
- 23. Git pull或git fetch忽略某些文件
- 24. 是否可以在某些日期自動運行django函數?
- 25. 爲什麼Git在檢出舊版本時顯示某些新文件夾?
- 26. 可執行文件是否可以將某些內容返回給其他可執行文件?
- 27. 檢查文件是否在改變過程中犯git的
- 28. 如何爲某些子文件夾檢查'git status'?
- 29. 如何在Git中自動檢測給定類型的文件是否已更改?
- 30. 如何在Git中阻止某些特定類型的文件?
JakubNarębski只是發現t他在Git腳本中的右側部分:查看我完成的答案。 – VonC 2009-06-30 16:51:36