2014-10-02 43 views
2

儘管不缺乏關於如何設置Subversion命令行界面使用的文本編輯器的信息(例如,請參閱here,herehere),但我無法弄清楚我的本地系統正在從中獲取文本編輯器信息。Linux上的Subversion CLI默認文本編輯器

在我的系統上,當我執行svn commit時,它會爲提交消息打開vim。既然這是我想要的,我從來沒有真正想過。這一直工作。然而,最近一名同事試圖犯下錯誤,並且因爲編輯沒有設置的錯誤而失敗。我從來沒有用我的方式去設置一個編輯器,所以我對此非常困惑。

我運行的是Ubuntu 12.04,我從源代碼編譯並安裝了Subversion CLI客戶端版本1.8.10。在此之前,我使用安裝了apt-get install subversion的任何Ubuntu的Canonical系統。

Subversion Book狀態的Using External Editors部用於設置文本編輯器下列可能性:

  1. --editor-CMD命令行選項
  2. SVN_EDITOR環境變量
  3. 編輯-CMD運行時配置選項
  4. VISUAL環境變量
  5. EDITOR環境變量
  6. 可能,內置Subversion庫回退值(官方不存在版本)

我已經調查了這些地方,並沒有發現默認的文本編輯器是如何設置我的電腦上:

  1. SVN_EDITOR環境變量未設置
  2. editor-cmd沒有在任我~/.subversion/config,也不設置時
  3. 不使用--editor-cmd選項0。這兩個文件都存在,但該行被註釋掉。
  4. VISUAL環境變量未設置
  5. EDITOR環境變量未設置
  6. 我下載the official repository,所以應該沒有回退。

必須有另一個地方可以設置默認值。有人知道嗎?

編輯:有人建議Subversion可能會調用/usr/bin/editor,並且這不是在我的同事的機器上設置的。我發現/usr/bin/editor在我的系統和我的同事系統上都是相同的。

+2

使用'ltrace'您'svn'命令查找。也許'svn'二進制文件有內置的東西;嘗試'字符串$(其中svn)' – 2014-10-22 17:40:11

+0

你確認你使用的版本是你創建的版本嗎?是否有可能你已經安裝並運行錯誤?我會通過運行'svn --version'來驗證 – 2014-10-29 00:04:39

+0

在兩臺機器上調用'svn --version'表明它們都運行Subversion 1.8.10版本。 – 2014-10-29 00:23:02

回答

0

試試這個:

update-alternatives --display editor 
+0

它看起來像你在談論的「替代品」系統,我實際上直到現在才聽說。 http://linux.die.net/man/8/alternatives給出了關於系統及其功能的一些信息,我不確定是否有更好的資源。 – Ben 2014-10-03 03:40:42

+0

我的系統上沒有更新選項。請更新您的答案,並提供您認爲與我的問題有關的信息。這個系統如何與Subversion聯繫起來,假設它完成了? – 2014-10-03 14:14:27

+1

就我所知,替代系統是Debian衍生產品的標準配置。你提到你使用的是Ubuntu機器。 Debian衍生產品使用_dpkg_來安裝,卸載和清除應用程序,對嗎? (突觸等是前端)。 '/ usr/bin/update-alternatives'由_dpkg_軟件包安裝。用我給你的命令,你會發現哪個編輯器有'/ usr/bin/editor'鏈接。它是_vim_? – jrfern 2014-10-10 17:03:20

0

我想在Linux和其他類Unix系統指定該正常方式,是設置VISUAL環境變量(GUI編輯器)或EDITOR變量(對於在終端中運行的編輯)。

+0

正如我的問題所述,我的系統中沒有設置任何環境變量,但它仍然有效(即,調用vim提交) – 2014-10-02 22:50:49

+0

對不起,我想我回答了錯誤的問題:-) – Ben 2014-10-03 03:41:23

1

當您直接下載源代碼(並構建它 - 假設您已滿足構建依賴關係)時,您指定(或者可以忽略它)默認回退編輯器。通常源建立在Ubuntu這樣的事情完成後(假設我已經提取/下載的顛覆從here1.8.10源):

./configure 
make 
sudo make install 

通知的./configure命令上面並沒有指定任何選項。默認值將安裝到前綴/ usr/local。在發佈這些命令(在Ubuntu 12.04上)之前,我運行了sudo apt-get build-dep subversion。然後我做了上面的命令來構建和安裝。我確保選項1-5(在OP問題中)不滿意,然後嘗試對存儲庫進行更改。我把它作爲響應:

svn: E205007: Commit failed (details follow): 
svn: E205007: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options 
svn: E205007: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was found 

由於我沒有刪除Ubuntu官方顛覆我不得不跑礦爲/usr/local/bin/svn,以確保我用的是一個我建。我本可以使用sudo apt-get remove subversion刪除官方的,以確保。現在

如果運行這些命令的源重建:

make clean 
./configure --with-editor=/usr/bin/editor 
make 
sudo make install 

每個人都應該發現,如果選擇1至5不滿意這個版本的顛覆運行它應該默認爲運行任何/usr/bin/editor點。在Ubuntu上,這取決於正在使用的替代方案。

所以當Ubuntu做一個官方的build時,他們的備用編輯器從哪裏來?我在link去了12.04源代碼庫進行顛覆。在右側,我下載了diff文件subversion_1.6.17dfsg-3ubuntu3.4.diff.gz。我打開了差異文件Ubuntu的使用和向下滾動,你可以找到他們使用這套./configure選項(標誌):

confflags:= \ 前綴=的/ usr \ --libdir = $( libdir)\ --mandir = \ $$ {prefix}/share/man \ --with-apr =/usr \ --with-apr-util =/usr \ --with-neon =/usr \ --with-農奴=/USR \ --with-伯克利分貝= :::分貝\ --with-SASL =/USR \ --with編輯器=在/ usr /斌/編輯 \ --with-ru通過-sitedir =/usr/lib中/紅寶石\ --with-痛飲=/USR \ --with-的KWallet \ --with-侏儒-鑰匙圈

黑體條目顯示,他們使用/usr/bin/editor作爲他們的後備。

我已經在Ubuntu 12.04上從源代碼構建了Subversion 1.8.10並獲得了預期的行爲。這暗示了以下其中一種可能性:

  • 在其中一個系統上實際滿足選項1到5。
  • 顛覆的一個版本是用--with-editor配置標誌(直接或間接)構建的。後備將指向--with-editor配置標誌設置爲。
  • 在其中一個系統上運行錯誤版本的Subversion。其中一種可能性是實際上正在使用Ubuntu官方顛覆。如果是這樣的話,它的建立是爲了使用/usr/bin/editor作爲後備。
  • 在您的系統中,您有一個用於指定編輯器的svn的別名(或等效項)。例如,將在啓動腳本中指定別名,例如~/.bashrc,~/.bash_profile,/etc/bash.bashrc
0

在您的svn二進制文件上運行strings以查看它是否提及Vim或任何相關的env變量。

根據strace -f還承諾可能會揭示一些東西。

0

將其設置在.bashrc文件中。
不要忘記「源.bashrc」或重新打開終端。

出口SVN_EDITOR = 'VIM'

相關問題