簡體   English   中英

使用 IntelliJ 作為 git 合並工具總是一啟動就退出

[英]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 不返回或生成新實例以使其工作?

沒有辦法做到這一點。 有三種解決方法:

  1. 在使用 difftool 之前關閉現有應用程序。 如果沒有其他窗口打開,mergetool 將正常工作。

  2. 使用具有不同緩存和配置主頁的 IntelliJ 的第二個實例但要小心第二個實例的許​​可。 例如,如果您使用許可證服務器,則兩個實例都將從服務器獲取許可證。

  3. 將諸如暫停(在 Windows 上)之類的內容添加到啟動腳本中。 所以 git 會調用 BAT 文件(在 Windows 上),這個 BAT 文件會調用 IntelliJ 然后等待輸入。 完成所有需要的操作后,您應該返回控制台並手動按任意鍵。

這現在有效。

運行操作“創建命令行啟動器...”以創建啟動腳本(對我來說是 /usr/local/bin/idea。)

在 .gitconfig 中:

[mergetool "idea"]
  cmd = idea merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
  trustExitCode = true

同樣對於 difftool

[difftool "idea"]
  cmd = idea diff \"$LOCAL\" \"$REMOTE\"

(由於存在錯誤,如果您之前創建了命令行啟動器並在此期間更新了 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM