簡體   English   中英

在Xcode中刪除本地文件后,如何與svn存儲庫同步項目?

[英]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.

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