2013-12-18 36 views
0

以下命令SVN路徑名不被終止「:」

svn log -g 

在我的倉庫執行返回大量的日誌信息,但最終與

svn: Pathname not terminated by ':' 

這裏死了這故事是說有人在過去曾經手動編輯合併信息(因爲他們使用的是一個git-SVN橋接器),但似乎並沒有正確修正mergeinfo。

不幸的是,因爲它是在執行命令

svn log --xml --with-all-revprops -r HEAD:1 -v -l 101 -g 

對庫做它與同樣的錯誤信息死於合併之前這是導致我的IDE問題。

我們如何修復存儲庫以擺脫這種噩夢?

回答

0

您可以在目錄中手動編輯合併信息或文件:

$ svn propedit svn:mergeinfo <directory> 

這將打開一個文本編輯器中合併信息,默認六。編輯它,保存並退出。然後提交更改:

$ svn commit <directory> 
+0

我在找什麼?因爲當我看到這個時,我得到了一個非常短的分支清單和合並信息,並且他們都對我天真的眼睛看起來很清楚。 – SVNMustDie

+0

@SVNMustDie也許它不是頂級的合併信息。子目錄可以有自己的mergeinfo。 –

+0

我在找什麼?如何縮小搜索到我應該看的哪個子目錄? – SVNMustDie

0

我認爲你可以使用這個命令找到破svn:mergeinfo

svn pget svn:mergeinfo -R . | grep -v : 

這將打印svn:mergeinfo線缺少一個冒號。

有效svn:mergeinfo線通常看起來像這樣:

trunk - /branches/feature1:8 

其中trunk是具有svn:mergeinfo屬性的路徑,/branches/feature1是被合併(在本例爲trunk)的路徑,並且後結腸是合併的版本號和範圍列表,例如8,11-15,41,44

UPDATE

這篇文章可能涉及:http://limedaley.com/post/changing-paths-while-migrating-subversion-repositories

在該示例中svn:mergeinfo內容被錯誤地改寫,但在我看來,這將導致徹底打破了倉庫,這是從不同你的情況,所以我不知道....

也許一個可能的解決方案是刪除所有的svn:mergeinfo屬性,看看是否修復你的問題,然後再將它們添加回來,正確。你可以刪除這樣的屬性:

svn propdel svn:mergeinfo -R . 
+0

所有行匹配正則表達式':'所以'svn pget svn:merge info -R'不會返回行。 | grep -v:'。 – SVNMustDie

+0

然後我不在''Pathname not terminated by':''來自...: -/btw在你的評論中,你寫了'svn:merge info',在'svn:merge'和'info'之間有一個空格但我想你沒有空格就跑命令了嗎? – janos

+0

我不明白它來自哪裏。 :-(是的,我確實將它輸入爲「mergeinfo」而不是「merge info」,這在這裏只是一個愚蠢的自動糾正。 – SVNMustDie