2010-06-29 114 views
5

我在Linux服務器上運行SVN服務器。我要出門一個星期沒有互聯網接入,因此沒有SVN接入。僅將某些SVN修訂版從一個存儲庫複製到另一個存儲庫

所以我試圖找出如何利用資源庫的快照與我在筆記本上,然後合併新修訂回現有的存儲庫,當我回來......

  • 我的筆記本電腦運行Windows 7,所以首先,我認爲VisualSVN Server可能是我在本地運行的服務器。

  • 我應該能夠傾倒我目前的資料庫,然後將其加載到一個新的存儲庫在我的筆記本

  • 但我不知道什麼是,當我從外地回來。我將在筆記本電腦上的SVN服務器上安裝所有這些新修訂版。如何轉儲,然後只將這些新修訂版加載到我的Linux服務器上的存儲庫中?

  • 如果我使用>svnadmin dump --revision 50:75(假設修訂版50到75代表我在筆記本電腦上做出的新修訂版),我可以簡單地將該轉儲文件加載到我的Linux服務器上的現有存儲庫中嗎?這很容易嗎?我知道有一些關於存儲庫UUID的東西可能會導致一些問題...

  • 還有一點需要注意,我是目前唯一對此SVN存儲庫有貢獻的開發人員。所以不需要合併代碼。

UPDATE

我不知道我能訪問本地存儲庫僅使用file:///。所以這可能會比運行VisualSVN服務器更好。但是,主要問題依然存在:如何從一個存儲庫獲取新版本到另一個版本?

+0

。看看Git的。它有一個通向Subversion的橋樑,允許您在本地提交,然後將所有提交返回到SVN。我不會將此作爲答案發布,因爲它確實意味着您出城之前您可能無法做出的一點學習曲線。 – 2010-06-29 03:22:39

回答

2

如果您是唯一的開發人員,也許您可​​以隨身攜帶存儲庫。

當你離開時用file:///協議訪問它,然後當你返回時將它放回服務器。 。 。

+0

與我一起是我的意圖。但是,我如何只將新版本從筆記本電腦上的存儲庫複製回原始的svn服務器?或者你是否建議我刪除現有的SVN服務器並將我的筆記本電腦中的整個存儲庫轉儲/加載到我的服務器上的新存儲庫中? – 2010-06-29 03:21:09

+0

我建議你可以採取整個事情與你......即包含的conf,DB,鉤等目錄服務器上的目錄 - 只需從服務器複製該目錄到你的筆記本電腦。訪問它像「svn checkout file:/// c:/ svn/repos」。當您返回時,請刪除服務器上的存儲庫目錄並從筆記本電腦複製您的本地副本。 – 2010-06-29 03:36:12

+0

...有點像自己動手的分佈式SVN源碼控制系統。 :) – 2010-06-29 03:38:27

0

我會建議在本地工作副本上製作一個git或mercurial local repository。

您可以將.svn文件夾和工件添加到.hgignore或.gitignore文件中,以保持存儲庫清潔,然後當您恢復時您可以執行svn提交的更改,或者如果您想要想要做一個階段性的承諾,在你上路的時候檢查你的mercurial/git的每一個重要單位。

這兩種回購方式都可以讓您輕鬆地在版本控制中保留自己的本地工作副本,並輕鬆同步到歷史記錄中的定義檢入點。

+0

我甚至會走得更遠,使用像hgsvn或git-svn這樣的工具,它們能夠自動將本地歷史記錄複製到subversion。 – Rudi 2010-06-29 08:28:20

1

的從倉庫提取一組修訂(NN到毫米):

svnadmin dump --incremental -r nn:mm /path/to/repository > /path/to/dumpfile.svn 

--incremental選項允許你合併這組更改而不會使整個基線將與進口一起。

要應用這些修訂到存儲庫:

svnadmin load --ignore-uuid /path/to/repository < /path/to/dumpfile.svn 

--ignore-uuid選項允許進口,以汽提出從源庫UUID信息。

我會限制該操作與普通的訂正文物倉庫,否則載荷可能會失敗。

0

非複雜的方法是簡單地簽出你需要,工作的一些,玩一些應有盡有,工作多一些,享受的環境,結識新的人,工作多一些,然後當你回來,承諾。一週的時間看起來可能很長時間沒有提交,但是當我離開時,尤其是那些非互聯網的地方,我往往不會像我預期的那樣做很多工作。

的WinZip可以幫助,如果你現在需要再採取「保存遊戲」快照。

相關問題