2010-03-20 48 views
8

我不能讓Tortoisehg(1.0)與subrepostortoisehg和subrepos

我有這樣的目錄結構的工作:

root 
    .hg 
    .hgsub 
    .hgsubstate 
    Customer1 
    Project1 
     .hg 
     foo.txt 
    Project2 
     .hg 
    Customer2 
    Project3 
     .hg 

下根.hgsub文件看起來像

Customer1\Project1=Customer1\Project1 
Customer1\Project2=Customer1\Project2 
Customer2\Project3=Customer2\Project3 

如果修改文件Customer1\Project1\foo.txt並從根提交它工作

>hg ci -m "command line commit" 
committing subrepository customer1\project1 

在Tortoisehg customer1\project1與狀態S(subrepo)顯示 但commiting當我得到一個消息

abort: customer1/project1: no match under directory! 

不支持此方案還是我做錯了什麼?

的醫生說:
「TortoiseHg 1.0引入了簡陋的,只有在提交/狀態工具subrepositories支持當水銀會考慮subrepo髒,它將在提交工具顯示爲一個特殊的條目文件列表,其狀態爲S.如果子提交文件包含在提交的文件列表中,則子提交文件將與其他更改一起提交,並更新主存儲庫根目錄中的.hgsubstate文件。「

+0

我有同樣的問題。似乎它可能與「tortoisehg嘗試提交customer1/project1而不是customer1 \ project1(反斜槓)」有關。「從命令行提交不會導致任何問題。 – drye 2010-06-21 20:47:25

回答

9

我有幾乎相同的問題,並開始嘗試一大堆變化,我終於通過在等號兩邊使用正斜槓(/)而不是反斜槓(\)在任何地方。

因此,嘗試...

Customer1/Project1=Customer1/Project1 
Customer1/Project2=Customer1/Project2 
Customer2/Project3=Customer2/Project3 

而且,當它不工作,我.hgsubstate文件只能有一堆在它的零。當它開始工作時,它有一個真正的GUID。

+0

謝謝,我已經離開了subrepos,所以我不需要它自己,但我相信你的研究並將其標記爲答案。 – adrianm 2010-11-09 15:31:50

+7

你搬到了什麼地方? – 2010-11-11 22:10:00

2

我覺得你的問題是與指定「customer1表\ PROJECT1」作爲一個子庫,因爲customer1表應該是一個嵌套的資源庫和。

customer1表顧客2都應該有 '.hgsub' 裏面描述他們(PROJECT1/2

的subrepos文件重拍您customer1表倉庫其他地方複製PROJECT1Project2的。將Project1Project2條目添加到Customer1中的'.hgsub'文件。

然後對Customer2存儲庫執行相同操作。

記住,嵌套庫可以自己嵌套所以創建一個「根」庫,然後克隆customer1表顧客2把它記住將條目添加到該文件.hgsub。

提交'根',你應該沒問題。

關鍵是將subrepos的所有實例中的更改推送到其克隆主文件,以便包含該子文件的其他克隆能夠根據需要提取該修訂。

我在我的機器上的同一個父文件夾中擁有所有主用回收站,因此它使相對路徑放置在'../Project1'或'../Customer1'等'.hgsub'文件中,這是推送更改的簡單方法到我的中央服務器的本地克隆。

就使用TortoiseHG而言,只要您已經創建了'.hgsub'文件,您將可以在v1.0中使用它,因爲它將在嵌套倉庫中創建和管理'.hgsubstate'文件!

+1

只需使用命令行進行頂層提交就容易得多。 我的猜測是tortoisehg嘗試提交customer1/project1而不是customer1 \ project1(反斜槓)。 – adrianm 2010-03-23 00:12:44

7

我能夠通過使用命令行提交主repo來解決這個問題。

hg commit -m 'Updated subrepo' 
4

我有同樣的問題:

在我的倉庫犯我改變subrepo模塊之一的一個失敗,消息

"abort: mysubrepo: no match under directory!" 

原因:

TortoiseHG無法提交到子庫,因爲它處理文件夾名稱區分大小寫

例: 您的原始倉庫:

C:\Shared\MySubRepo 

克隆這是一個subrepo到另一個倉庫通過命令行

hg clone C:\shared\mysubrepo <--- Note the lower cases! 

將創建一個文件夾subrepo mysubrepo你的父母在倉庫裏。 像往常一樣將它添加到10.hgsub文件(我總是使用平臺獨立的'/'而不是'\',所以我不認爲這是錯誤的原因)。 嘗試使用--subrepos TortoiseHG提交將以「目錄下的不匹配!」結束錯誤。但是,通過命令行工作。

(與上例爲原來的文件夾)重命名文件夾subrepomysubrepoMySubRepo TortoiseHg可以成功提交後

也許你在hgrc文件還可以編輯該文件夾的名字,但我不知道這是真的neccessary,因爲我在文件中給它改名搞清楚之前,有canse敏感的差異在文件夾名稱中。也可能需要從TortoiseHg Workbench的存儲庫註冊表中刪除存儲庫並讀取它(並且/或者重新啓動Workbench)。

0

添加我的2美分。

我是在以下情況下在Windows收到此錯誤abort: customer1/project1: no match under directory

  • 回購是一個名叫MyFolder文件夾中(注意是大寫)
  • 回購了subrepo
  • 一些文件 (只有一些!)在承諾使用myfolder/filename.ext(注意小寫)

一切工作正常,命令行提交工作正常,但烏龜抱怨。

重命名文件(找到使用hg status --all小寫的人,你是罰款)