簡體   English   中英

使SVN工作文件夾與存儲庫版本相同

[英]Make a SVN working folder identical to repository version

我基本上想將SVN導出作為腳本化構建過程的一部分,但是不必每次都從頭開始獲取整個存儲庫,這很慢並且占用帶寬...更不用說會使腳本測試變得很痛苦了。如果每次我們調整某些內容或在腳本中發現拼寫錯誤,都可以這樣做。

是否有一種顯而易見的方法可以導出到現有目錄,因此僅提取不同的文件,並刪除非回購文件,基本上可以進行干凈導出,但采用智能方式?

Windows是首選,但我想Cygwin是一個選擇。

我認為完成此操作的唯一方法是簽出工作副本,然后更新和還原該副本。 更新WC僅獲得更改。

svn export不知道更改了哪些文件,要比較文件,首先必須獲取所有文件。 同樣,很難將已刪除或重命名的文件從“導出”目錄中刪除。

簽出工作副本,然后從您的工作副本中導出。 然后,工作副本上的SVN更新將很快並且隨處可見。 然后,您可以刪除原始導出,然后從工作副本中重新導出。

優化了所有帶寬不足的操作。 繁重的刪除和重新創建與以前相同,但是現在全部在本地,因此應該更快。

另外,您可以選擇在導出的工作副本中進行更改,但是您可能需要對此加以注意,並考慮在svn更新期間發生沖突的影響。

我不確定我是否理解您的問題。 重述一下。 我認為您希望定期更新回購本地副本。 但是,您需要原始的工作副本,以便生成的構建文件是干凈的。 考慮到這是您的問題,下面是我的建議。

據我所知,svn導出可能不是最好的選擇。 因為svn導出的目的是獲得svn倉庫的未版本化工作副本。 由於它是未版本控制的,因此svn客戶端實際上並不知道必須從何處開始更新。

我能想到的最好的選擇就是這個。 在某個位置檢出存儲庫的副本(本地副本,LC)。 該LC應該在構建過程中進行更新。 在其他位置復制LC,然后將其用於執行構建。 以下是您需要的命令

1. svn update <arbitrary path>(in the working copy)
2. copy <arbitrary path> <build path>
3. find <build path> -type 'd' -name '.svn' (if you would like to remove the .svn hidden files, but they are not going to really hurt the build process)

消除復制時間的一些選項,無需考慮構建過程的時間

  1. 如果您想在構建過程中節省復制時間,則可以在每次構建后執行此復制操作,並在構建之前svn更新副本(假定保留了.svn文件夾)。

  2. 在Linux上,可以使用rsync使兩個文件夾保持同步。 可以進行構建副本以反映原始副本中的更新。

  3. 在Windows中,上面建議了一些工具來實現同步。 我沒有使用過它們,但是我將為您提供鏈接以供您嘗試。
    http://lifehacker.com/326199/synchronize-folders-with-synctoy-20 http://www.techsupportalert.com/best-free-folder-synchronization-utility.htm

另一個選擇是使用簽出和還原/更新,但也使用SharpSvn庫之類的東西來創建將刪除非源代碼控制文件的腳本。 這樣,構建工件(如已編譯的代碼)將被刪除,版本化的文件將通過還原/更新返回到基本狀態。

如果您有很多目錄和文件,則此掃描可能會很慢,但是如果您對哪些目錄將包含構建工件有信心,則可以只掃描那些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM