2013-03-27 73 views
1

這是我的情況:我有一個本地副本從svn檢出項目。我正在開發一個Linux服務器。我在工作日開始時執行結帳,然後我和其他人員編輯項目中包含的文件/文件夾。在一天結束時,我必須對svn進行更改。Subversion:檢測重命名文件夾

我使用命令svn status .拿到車的修改,然後我執行svn add [filename]svn delete [filename]新的文件/文件夾和被刪除的文件/文件夾。

我只有用重命名文件夾的問題。我知道在svn中重命名文件夾的正確方法是命令svn move [from-folder] [to-folder]。 但是如果有人使用mv [from-folder] [to-folder]重命名文件夾呢?

如果我做的:

svn delete [from-folder] 

然後

svn add [to-folder] 

我得到了「delete命令」沒有錯誤,但得到的「添加命令」的說法錯誤的是「[到文件夾]已經在版本控制之下「。

我如何檢查是否一個文件夾已被重命名?我該如何正確提交更改?

回答

1

svn -u status爲您提供了本地和遠程更改的列表,所以你會提前知道是否有過任何改變。

同樣,svn功能的文件鎖定,所以如果你的團隊是不是能夠達成協議,不跨過他人的工作,這個功能可以幫助:)。 svn lock [[your file]]爲您提供了一些安全保障,雖然鎖可以被盜。見the documentation :)

+1

Subversion沒有實現文件夾鎖定,所以依靠它來防止這種情況不會有幫助。 – alroc 2013-03-27 18:22:43

+0

@alroc編輯我的答案。我太習慣GUI svn客戶端鎖定每個文件在「鎖定」文件夾/目錄中...... :) – orique 2013-03-27 18:25:06

+0

感謝您的回答。好吧,我知道如何獲得chenges,但如何提交已重命名的文件夾? – Patrik 2013-04-08 06:58:23

4

你有幾個問題在這裏:

  1. 你有多人共享一個單一的工作副本。這是一個壞主意。當你這樣做的時候,人們很容易對彼此的變化進行干預,並承諾沒有準備好承諾的事情。你失去了所有的責任 - 誰改變了什麼?每個人都在研究相同的文件,所以現在不可能知道誰做了什麼。每個人都應該在自己的工作站上(或者在他們自己的主目錄下,如果你必須在遠程系統上工作)擁有自己的工作副本。
  2. 上述內容的補充:您的提交消息描述了您爲什麼進行了所做的更改。如果每個人都共享工作副本,並且只有一個人提交,那麼您如何記錄您的更改歷史記錄(「爲什麼」)?
  3. 您有人沒有正確使用這些工具。如果您在工作副本中,則必須使用svn子命令完成所有操作。句號。
  4. 您正在退房嗎?在合適的Subversion工作流程中不需要這樣做。

要回答的核心問題: 使用svn st -u尋找任何變化或本地服務器上。經常運行svn update是一個好習慣,以便儘快採取更改以防止出現類似問題,並在完成目錄結構更改後儘快提交它們(假設它不會破壞其他內容),以便每個人都知道變化。

但是,團隊成員之間的良好溝通和正確使用工具是不可替代的。

+0

嗨alroc。在我的情況下,我們沒有多個人工作副本,我的問題是我有人沒有在工作副本上使用svn命令。在我的個人電腦上,我使用SmartSVN來管理svn項目:該軟件可以管理沒有問題的重命名文件夾。爲什麼我不能用命令行svn客戶端做同樣的事情? – Patrik 2013-04-08 07:01:46

+1

當你說「人民」(複數)和「工作副本」時,我把那麼多的人讀到一個WC上。簡而言之,SmartSVN *會嘗試*爲您解決問題(可能會出現這種情況),而標準客戶端根本不具備該功能,因爲開發人員可能寧願不花費功能或多或少地猜測你的意圖,贊成可能具有較小危險副作用的特徵。 – alroc 2013-04-08 11:16:47