2009-08-30 71 views
10

在我的倉庫,可以說我有這樣的:顛覆 - 檢出父目錄

Animal 
    Dog 
    Beagle 
    Hound 
    ... 

可以說,我檢查了狗到工作目錄,我意識到,哎呦,我真想檢出動物。

我可以刪除我的工作副本,狗目錄和結帳動物,但是我可以在不刪除並重新檢出的情況下這樣做嗎?

如果我的狗的工作副本有作爲父文件夾的動物,並且我沒有刪除狗的結帳動物,我得到類似「顛覆無法添加目錄版本相同的名稱已經存在」。

我也在用烏龜。謝謝。

+3

刪除並重新檢出時出現了什麼問題?如果您已經做出更改,請提交,然後重新開始。 – kajaco 2009-08-30 14:28:41

+1

這不是問題。這就是我所做的,它的工作。只是想知道我是否有更好的方法,或者有更正確的方法來做到這一點。 – Steve 2009-08-30 14:39:31

回答

4

這是不可能的。

最簡單的方法是刪除您的工作副本並執行Animal的新結帳。

如果在Dog你想保留任何的變化,移動Dog到一個臨時位置,結賬Animal然後複製DogAnimal目錄。

2

您正在尋找svn switch,它會更新您的工作副本以反映新路徑。不過,修改後的文件不會被觸及。在TortoiseSVN中,右鍵單擊並從上下文菜單中選擇「切換...」。

svn switch更常見的用例是在源自同一點的分支之間切換,以便您可以對相同的代碼擁有不同的視圖。但是您可以在存儲庫中的任意路徑之間切換。

+1

但是我的父目錄Animal不在版本控制之下,所以我不能切換到它,至少不是從Tortoise。也許通過命令行? – Steve 2009-08-30 14:41:13

+1

我很困惑。如果你的倉庫不受版本控制,你的倉庫如何擁有Animal?這是一個錯字嗎? – 2009-08-30 14:55:32

+1

我做了一個副本(分支)來創建動物。在我的工作副本中,Animal沒有.svn目錄。這是一個與存儲庫文件夾名稱相同的文件夾。所以我的工作目錄是一個存儲庫結構的完全重複,但我檢查了狗到狗。希望這是有道理的。 – Steve 2009-08-30 15:16:53

0

我發現避免從svn服務器下載我的磁盤上已有的內容,然後使用--depth empty完成更新或檢出。所以像這樣的東西:svn co --depth empty Animal ; cd Animal ; svn update --depth empty Dog

無論如何,這個想法是得到Dog作爲目錄Animal/.svn/entries

這種「--depth empty」不斷從網上下載的實際內容SVN,但SVN確實讓子目錄(在這種情況下,Dog)和svn並把在Animal/.svn/entriesDog子目錄中的條目。

然後用您已擁有的副本替換Dog子目錄。

你可以通過打開Dog某個文件中的某個文件並在Animal目錄中執行svn update來檢查它的工作原理。重擊的文件應該從svn服務器上下載。

+0

不起作用:那麼你得到'更新: 跳過‘樹幹’ - 的封閉工作拷貝發現 在修訂13370. 總結的衝突:「」 跳過路徑:1'這樣做的時候'SVN up'在'動物'中。 – 2018-01-26 09:56:45

+0

過了很久,所以我不確定問題是什麼。 SVN應該製作動物和狗的目錄,不是嗎?所以應該沒有阻礙工作副本。 另一個想法是,SVN從'13開始已經改變了,所以這個技巧不再適用。 – 2018-01-27 10:53:37

0

是的,你可以映射父目錄。

爲此,您只需從「狗」(子)目錄中刪除.svn目錄,然後在父目錄上執行SVN Update。它會使現有文件爲Versioned副本,並將從SVN服務器下載Dog目錄的增量內容。

請注意:您應該具有精確的目錄結構作爲SVN目錄結構。