簡體   English   中英

將.svn目錄從結帳復制到非結帳以使其成為結帳

[英]Copying the .svn directories from a checkout to a non-checkout to make it a checkout

我在生產環境中有一個大型應用程序,我正試圖在版本控制下移動。 因此,我創建了一個新的repo並導入了應用程序,減去了不應受版本控制的各種目錄和文件。 現在,我需要將已安裝的副本作為結帳(但仍保留額外的文件)。 此時,在最新版本的SVN中,我只需使用--force選項在現有目錄上進行檢查。 但遺憾的是,我有一個古老版本的SVN,從之前添加--force選項(並且還無法升級......長篇故事)。

因此,我將應用程序檢出到另一個目錄,並希望簡單地將所有.svn目錄復制到原始目錄中,從而將原始文件轉換為結帳,同時留下額外的文件。 現在,也許我只是度過了艱難的一天,錯過了普通網站上的一些東西,但我似乎無法弄清楚這一點。 以下是我到目前為止嘗試過的方法:

  1. 使用rsync:我似乎無法正確組合include和exclude指令來遞歸捕獲所有.svn目錄,但沒有別的。

  2. 使用cp:我無法找到一個好方法讓它在整個應用程序中貫穿所有.svn目錄。

  3. 使用find with -exec cp:我遇到了問題,找到的文件的路徑名的前導部分弄亂了目標路徑。 我可以使用-printf'%P'排除它,但這似乎不會進入exec的{}替換。

  4. 使用find with xargs to cp:我遇到了在發送父母之前發現通過子目錄發送的問題。 不幸的是,find沒有--bread選項。

有什么想法嗎?

其他信息:

  • bash 3.0.0.14
  • rsync 2.6.3 p28
  • cp 5.2.1
  • svn 1.3.2

使用tar並找到在干凈的結帳中捕獲.svn目錄,然后解壓縮到您的應用程序中。

cd /tmp/
svn co XXX
cd XXX
find . -name .svn -print0 | tar cf /tmp/XXX.tar --null -T -
cd /to/your/app/
tar xf /tmp/XXX.tar

編輯:切換find / tar命令以使NUL終結符在包含空格的文件名面前具有健壯性。 原始命令是:

tar cf /tmp/XXX.tar $(find . -name .svn)

(5)你不能只是結帳到另一個目錄,然后將額外的文件復制到該目錄,在切換到從新目錄運行應用程序之前驗證一切正常嗎?

暫無
暫無

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

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