2009-02-13 29 views
1

假設我正在開發一個項目,並且我知道我已經完成了一個特定的類,並且不應該再次編輯它。我怎樣才能鎖定這個類,這樣就不會再發生任何提交了?我試圖鎖定它,但只能持續一次提交,並仍然允許我編輯它。使用Subversion實現代碼凍結


推理:
我有執行一兩件事,只有一件事一類。它管理數據庫的一部分 X X不會改變,因此班級不必更改。任何更改都可能是危險的,並引入了不必要的錯誤。爲了舉例,這是一個包含googol(1.0 x 10^100)類的項目中的一個類。一個小班的分支會過於複雜,特別是如果一半的班級是這樣的話,那麼至少會有半個googol分支。

+0

如果它「不會改變」,那麼爲什麼要擔心呢? – Tim 2009-02-13 18:57:00

+1

因爲有人可能會嘗試 – Malfist 2009-02-13 19:23:53

+0

http://www.noah.org/wiki/SVN_Directory_Lock有一個完美的解決方案來鎖定回購分支(目錄)。 – 2014-09-10 08:56:38

回答

5

編輯:根據您的編輯

,如果你知道它不會改變,那麼爲什麼還要擔心呢?如果你不信任你的開發者,那麼還有一些其他問題,但是從我所看到的你試圖使用版本控制來「解決」那些並不存在的東西。

我和其他許多人對「不變」斷言非常懷疑。

就這樣吧。

另外兩個選項是通過權限文件提前掛鉤或訪問控制。

POST之前編輯:

如果您使用的是Apache你可以設置權限,只有FR該文件(S)讀取信息庫。但在我看來這是一個很大的錯誤。

爲您構建你可以強制特定版本的「得到」?

創建一個分支並將其強制爲一直使用的分支。

如果添加提交你可以知道更改文件的時間,你不希望的鉤通知。

或者你可以有一個發展分支和「批准」分支,只是從來沒有促進該文件(S)

2

好了,開始有任何改變,基本的答案是你知道應該永遠不要再編輯一個特定的類。相信我,它會的。

儘管如此,代碼凍結 - 在你說「沒有更多的變化」 - 很容易在通過拉動標籤或分支機構(差別是相當任意的)上的代碼svn的實現。

如果要凍結一個文件,請考慮使用SVN屬性標記它。

1

通常,源代碼管理系統不允許您永久鎖定類。這是有道理的,因爲如果你有一個錯誤,你不得不「解凍」這個類,等等。

但是,Subversion允許您標記或分支代碼。標記允許您返回特定版本的代碼,而分支允許您同時處理程序的多個版本。兩者都允許您以某種方式「凍結」代碼。

對於大型項目,在凍結髮行版之前,您通常會從HEAD分支,並繼續在分支中插入錯誤修復(如v1) - 這可以隔離進入V2的HEAD的任何新開發。

2

我不會用源代碼控制這一點,而不是如果你可以提取的功能塊(含本級),那麼你可以創建從一個單獨的項目。然後,該項目的輸出可以作爲一個庫包含在您的主項目中,即在Java中,我將從新項目創建一個jar並將其包含在我的主項目中。如果/當這個類和它的關聯類發生變化時,您可以重新創建這個庫,但是當您決定將這些更改包含到您的主項目中時,可以完全控制它。

0

您可以使用SVN鎖定功能,而不是使用您自己的用戶名鎖定它,而是使用特定的用戶帳戶(例如「ice-code」(雙關語意))來獲取鎖定。這樣,當你提交時,它不會嘗試釋放鎖。當你想釋放所有的鎖,使用單獨的用戶帳戶來解鎖它。