[英]How to synchronize a project with svn repository after deletion of local files in xcode?
在初始修訂過程中,我已向svn存儲庫添加了一些文件。 但是現在,這些文件已經消失了,可以通過直接在xcode 4.2中刪除它們來完成。 但是它們仍然存在於svn中,我想將svn存儲庫更新為我的本地項目版本。 我知道我可以使用svn rm命令刪除每個文件,但是關於這一點的想法讓我很煩,因為我需要手動查找,選擇和刪除每個文件。 有沒有更痛苦的解決方案?
PS。 此外,歡迎提供有關如何檢查本地項目和svn存儲庫之間差異的任何建議。 當前,如果我正在執行更新,則xcode表示我的本地副本是最新的,因此,我什至需要手動查找丟失的文件。
如果您不介意進入命令行,則可以運行svn status
並找到已刪除的文件。 這些將從感嘆號開始。 這是我剛剛熟悉的存儲庫中的一個示例:
$ svn status
! subversion/pre-commit-kitchen-sink-hook.html
! subversion/svn-watch.html
! bludgen/bludgen.html
! duplicate-properties-files/fixup.html
! cvstools/group.html
! cvstools/find-branch-usage.html
A cvstools/someprogram.py
M cvstools/find-branch-usage.pl
! cvstools/scramble.html
M cvstools/findNames.pl
現在,您需要做的就是找到程序的名稱。 如果程序名稱中沒有空格,那么簡單的[awk]腳本就足夠了:
$ svn status | awk '/^!/ {print $2}'
subversion/pre-commit-kitchen-sink-hook.html
subversion/svn-watch.html
bludgen/bludgen.html
duplicate-properties-files/fixup.html
cvstools/group.html
cvstools/find-branch-usage.html
cvstools/scramble.html
現在您有了程序列表,可以通過xargs
將其運行到svn rm
命令中:
$ svn status | awk '/^!/ {print $2}' | xargs svn rm
D subversion/pre-commit-kitchen-sink-hook.html
D subversion/svn-watch.html
D bludgen/bludgen.html
D duplicate-properties-files/fixup.html
D cvstools/group.html
D cvstools/find-branch-usage.html
D cvstools/scramble.html
幸運的是,Mac附帶了Subversion命令行客戶端。 這將刪除通過Subversion手動刪除的文件,並允許您提交更改。 然后,您可以使用最新代碼更新存儲庫的副本。 可能存在一些沖突(您刪除了某個文件,該文件在以后的修訂版中已更新),但是這些沖突應該可以處理。
您可以使用svn diff
查找當前工作副本和存儲庫的HEAD版本之間的差異。 不幸的是,-- --summarize
參數僅在您執行存儲庫與存儲庫之間的差異時才有效。 但是,您可以使用grep
查找以Index:
開頭的行,從而過濾掉不同的文件:
$ svn diff -rHEAD | grep "^Index:"
Index: windows-tools/which.pl
Index: subversion/pre-commit
Index: subversion/README
Index: subversion/control.ini
Index: subversion/pre-commit-kitchen-sink-hook.html
Index: subversion/svn-watch.html
Index: cvstools/findNames.pl
Index: cvstools/group.html
Index: cvstools/find-branch-usage.html
Index: cvstools/someprogram.py
Index: cvstools/find-branch-usage.pl
Index: cvstools/scramble.html
Index: bludgen/bludgen.html
Index: duplicate-properties-files/fixup.html
唯一真正的問題是XCode使用的Subversion客戶端是否與Subversion命令行客戶端兼容。 例如,VisualStudio Subversion客戶端使用_svn
作為Subversion信息目錄的名稱,而命令行客戶端使用.svn
。
我相信XCode Subversion客戶端與Subversion命令行客戶端的1.6.x版(甚至更早的版本一直兼容到1.4版)兼容,但與最新的1.7版Subversion不兼容。
如果您沒有篡改Mac的Subversion安裝,那就沒問題了。
我知道要執行的唯一方法是:
編輯-對不起,我誤解了這個問題。 這可能會幫助您查找丟失的文件,但不會幫助您進行提交。 我以為您正在嘗試還原刪除,而不是提交刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.