2011-06-07 45 views
0

目前,我們有我們的CVS倉庫如下:重新構造CVS倉庫和留住歷史

Module1 
    | 
    | 
    +-----A 
    | 
    +-----B 

我們希望Ø重組該模塊使得子目錄A和B表現爲高層次的模塊。我能做的就是檢查Module1,然後將A和B拉出來,然後分別爲A和B做一個新的cvs add,從而使它們成爲新的CVS模塊。但我確信如果我這樣做,我將失去歷史,以及我將不得不刪除A和B下的所有內部CVS文件夾。

Q1:那麼有沒有一種方法來重組這個並保留歷史?

我基本上我所要做的是過濾掉A和B. 所以之間的訪問 -

Q2:有沒有一種方法來設置安全性,以便某些用戶只能檢查出模塊1/A和不是Module1/B?反之亦然?

+0

好的。所以,在我看來,如果我有文件系統權限,我可以只對CVS服務器,轉到cvs root並重新構建目錄。在cvsroot下移動的目錄將作爲新模塊檢出。有沒有人看到任何問題? – 2011-06-07 21:21:58

回答

2

Q1: So is there a way to restructure this and retain the history?

就像你在你的評論中寫道,如果你有SYS PRIVS就可以在倉庫,並保持低於A和B的所有文件的歷史,但這樣做mv模塊,你失去了的歷史,/A曾經是Module1/A和/ B曾經在Module1/B中(更不用說構建腳本可能會破壞)。 Subversion通過提供記錄模塊的移動/重命名歷史的move(或重命名)命令爲您解決此問題。

Q2: Is there a way to set up security so that certain users can check out Module1/A only and not Module1/B ? and vice-versa?

有肯定的是,使用組權限。在該頁面中, http://www.linux.ie/articles/tutorials/managingaccesswithcvs.php 這裏我指的是在情況下,剪斷該頁面永遠消失

每一個模塊中的組

我們已經看到早期如何創建幫 cvsusers組與 協調開發人員的工作。我們可以擴展這個 的方法來允許目錄級別 簽入限制。

在我們的例子,讓我們說, 模塊「cujo」是爲R/W傑克 和約翰,以及模塊「嘉莉」是 R/W爲John和Jill。我們將創建 兩組,g_cujo和g_carrie,並 添加相應的用戶每個 - 在 /etc/group中,我們添加

g_cujo:x:3200:john,jack 
g_carrie:x:3201:john,jill> 

現在在庫(根),運行

find $CVSROOT/cujo -exec chgrp g_cujo {} \; 
find $CVSROOT/carrie -exec chgrp g_carrie {} \; 

保證,和以前一樣,所有的 目錄有GID位設置。

現在,如果我們在 倉庫一看...

[email protected]:~/cvs$ ls -l 
    total 16 
    drwxrwsr-x 3 john  cvsadmin  4096 Dec 28 19:42 CVSROOT 
    drwxrwsr-x 2 john  g_carrie  4096 Dec 28 19:35 carrie 
    drwxrwsr-x 2 john  g_cujo  4096 Dec 28 19:40 cujo 

,如果傑克試圖提交修改 嘉莉...

[email protected]:~/carrie$ cvs update 
    cvs server: Updating . 
    M test 
    [email protected]:~/carrie$ cvs commit -m "test" 
    cvs commit: Examining . 
    Checking in test; 
    /home/john/cvs/carrie/test,v <-- test 
    new revision: 1.2; previous revision: 1.1 
    cvs [server aborted]: could not open lock file 
    `/home/john/cvs/carrie/,test,': Permission denied 
    [email protected]:~/carrie$ 

但在cujo,沒有問題。

[email protected]:~/cujo$ cvs update 
    cvs server: Updating . 
    M test 
    [email protected]:~/cujo$ cvs commit -m "Updating test" 
    cvs commit: Examining . 
    Checking in test; 
    /home/john/cvs/cujo/test,v <-- test 
    new revision: 1.2; previous revision: 1.1 
    done 
    [email protected]:~/cujo$ 

添加用戶的過程是現在 更復雜一點,它 可能。要創建一個新的CVS用戶,我們 必須創建一個系統用戶,將他們 添加到他們可能寫入的 模塊對應的組,並且(如果 您使用的是pserver方法) 爲他們生成密碼,並將 添加到CVSROOT/passwd的條目中。

要添加一個項目,我們需要創建一個 組,進口來源,更改所有文件的 集團在 庫,並確保在執行位GID 設定的設置對所有 目錄內該模塊,並將相關用戶添加到組中。

毫無疑問,我們需要更多的 來完成所有這些操作,比當我們用尖刺 刺戳人時更需要。在這種方法中,我們從來沒有 添加系統用戶或組或 更改目錄上的組 - 所有 這是照顧一旦我們設置 存儲庫。這意味着一個不帶動力的用戶可以成爲CVS管理員,而不需要 機器上的根證書。

+0

+1並且接受!感謝您長時間解釋這一點 – 2011-06-24 17:15:53