[英]Using IntelliJ as git mergetool always exits as soon as soon as it starts
我已經在我的 mac 上將 IntelliJ 配置為我的 diff 和 mergetool,但是 git 啟動它,命令行總是立即返回,而不是等待 diff 完成,這意味着執行的更改不會反映在磁盤上。
我的配置是:
[mergetool "intellij"]
cmd = /Applications/IntelliJ\\ IDEA\\ 13\\ CE.app/Contents/MacOS/idea merge \
$(cd $(dirname \"$LOCAL\") && pwd)/$(basename \"$LOCAL\") \
$(cd $(dirname \"$REMOTE\") && pwd)/$(basename \"$REMOTE\") \
$(cd $(dirname \"$BASE\") && pwd)/$(basename \"$BASE\")
$(cd $(dirname \"$MERGED\") && pwd)/$(basename \"$MERGED\")
trustExitCode = true
我已經測試在沒有 git 的情況下手動調用 IntelliJ 並且它也立即返回,所以我不認為這是由 git 的調用引起的,而是 IntelliJ 命令行調用只是發送一條消息以打開 window 到現有運行實例IntelliJ .. 是否有一個選項可以強制 IntelliJ 不返回或生成新實例以使其工作?
沒有辦法做到這一點。 有三種解決方法:
在使用 difftool 之前關閉現有應用程序。 如果沒有其他窗口打開,mergetool 將正常工作。
使用具有不同緩存和配置主頁的 IntelliJ 的第二個實例但要小心第二個實例的許可。 例如,如果您使用許可證服務器,則兩個實例都將從服務器獲取許可證。
將諸如暫停(在 Windows 上)之類的內容添加到啟動腳本中。 所以 git 會調用 BAT 文件(在 Windows 上),這個 BAT 文件會調用 IntelliJ 然后等待輸入。 完成所有需要的操作后,您應該返回控制台並手動按任意鍵。
正如 Joshua Goldberg 提到的想法,同樣適用於 Rubymine。
打開 RubyMine,然后按 shift + command + A,選擇“創建命令行啟動器”並保存。 之后,您可以在終端中毫無問題地使用“mine”命令,並且您應該更新 git 配置文件。
[difftool "mine"]
cmd = mine diff \"$LOCAL\" \"$REMOTE\"
[mergetool "mine"]
cmd = mine merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
trustExitCode = true
非常感謝約書亞,很大的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.