2010-06-12 65 views
1

伊夫在過去的幾年中取得了從該網站這麼多的知識/洞察的文件列表,現在我其實希望能得到一些啓示。SVN進口,不修改修訂或修改交易

該場景如下: 您具有repo(trunk,branches,tags)的一般結構,但在佈局中添加了另一個名爲'db_revs'的目錄。現在,在預提交中,將特定數據庫(具體細節無關)轉儲到臨時文件中,例如/tmp/REV.sql(REV是回購的HEAD修訂版本號或事務)。

K一切都很好,您可以將該臨時文件導入到/db_revs/REV.sql中的回購庫現在很明顯,導入,即使是在提交過程中發生的事情,也會增加回購修訂版。所以當你在某個時候提交了一個提交,在trunk中說'test.php'並且它在修訂版本159中完成時,那麼預提交按照它的原樣運行,並且數據庫轉儲被導入,但是隨後你坐在一棵樹中repo瀏覽器,其中'trunk'在修訂版本159處,並且具有導入的轉儲的'db_revs'在158處(我已經制作了它,使得文件名與修訂版即:159.sql匹配,但是那個文件在修訂版158)。 HEAD修訂版本之前在此例如提交了157

NB如果你在做一個進口前提交,你需要添加一些邏輯不執行導入,說首先檢查了臨時文件的存在,否則它會導致,嗯,堆棧溢出,你的電腦會很快爬到靜止的地方

所以我想知道是否有可能導致不提交其更改。我意識到我可能會吠叫錯誤的樹開始,所以我有另一個想法做到這一點,這使我想到了我的問題的第二部分,是否有可能修改事務即將提交的文件列表回購。我知道這可以做到一個廁所,但這不會幫助作爲一個廁所是一個檢查出的副本說幹線,所以我不知道如何將文件添加到「幹線以上的db_revs」文件夾?

任何幫助是極大的讚賞

乾杯 沃恩

回答

0

一般的答案是「你不允許預期間修改任何版本信息*交易的階段」。這包括更改文件或目錄,或更改文件或目錄上的屬性。版本屬性(如svn:log或svn:author)沒有版本控制,因此是公平的遊戲。

該問題已經在深度其他地方進行了討論,但它歸結爲這樣:如果你在飛行中改變交易

,目前還沒有機制,爲SVN服務器告訴事物都有客戶端改變。因爲沒有機制/沒有更新,你的客戶認爲他是跟上時代的反對回購的時候,其實他不是。

您也許能觸發進口脫身/在post-commit鉤子提交;那時服務器已經創建了修訂版,並且任何更改都被正確地歸因於更高版本。我不知道這是否被支持。