2010-06-19 181 views
0

我終於決定轉向版本控制工作流程,但是......這是一個月,我試圖用SVN設置一個工作流程,但沒有運氣。顛覆顛覆?

我與科達工作(svn是 支持)+媒體寺廟託管。 我只是在/ data/svn/myproject中設置了一個回購(跟隨MT指南),並導入了我的網站根目錄。

問題1:svn只導入根目錄中的一半文件,而不是目錄。

然後我試着(按照教程)在Coda結賬。

問題2:出現錯誤(本地目錄不是工作副本),只創建了一個.svn文件夾。

現在,我想我根本不知道版本控制系統是如何工作的。只需向我清楚:當我第一次簽出文件時,它們將從我的遠程目錄拷貝到我的本地文件夾中? FTP和版本檢查仍然是兩項分開的任務? 我的意思是:當我在Coda提交一個文件時,它會自動放到我的遠程網站目錄中,更新舊的目錄嗎? 而且,這只是關於代碼或一切都放在版本控制(圖像等....)?

對不起,我問過之前已經閱讀了很多指南,但我不明白!

感謝

+0

誰投了票給超級用戶? O_o – 2010-06-19 13:40:26

回答

3

首先,我建議你去思考的版本控制,從你的IDE一個單獨的東西。它無論如何都可以在文件系統級別上運行,無論Coda提供給您的任何集成只是一個抽象。最初,如果把Coda排除在外,理解事情會更容易。現在,我個人不喜歡命令行(雖然它很強大,當然),所以如果你在Windows上,我建議你得到Tortoise並且玩弄它,它會給你更好的感覺。在Mac上,雖然我不知道。也許在Mac上有一些很棒的SVN圖形工具。

基本上,SVN工作流由兩部分組成 - 存儲庫和本地文件夾。存儲庫就像一臺服務器。這是所有事物的中心位置。把它想象成一個「聰明的FTP文件夾」。

工作流程是這樣的:你把你所有的源代碼和東西寫在你的本地文件夾中。當你覺得你已經完成了,你將它複製到中央文件夾(存儲庫),並開始下一件事。完成後,再次將其複製到中央文件夾。等等。這一行動是「承諾」。您將本地文件複製到中央文件夾,覆蓋所有內容。

嗯,它實際上比簡單的複製更「聰明」一點。 SVN跟蹤所有更改,因此當您在本地刪除文件時,提交也會刪除服務器上的文件。這就像使服務器文件夾看起來完全像您的本地文件夾。

現在,版本控制的主要賣點是所有這些版本庫的更新都是非破壞性的。也就是說,當您將最新的最好的東西複製到存儲庫時,它將存檔的舊文件歸檔,並且您可以隨時取回它們。實際上從SVN存儲庫中刪除某些東西確實非常困難。這就是爲什麼即使單個開發人員傾向於使用源代碼管理 - 這就像一個備份系統,如果你搞砸了,你總是可以拿舊版本並重新開始。沒有什麼會丟失。而且它的效率也非常高。

SVN比簡單的FTP文件夾的另一個主要優勢是當多個用戶對相同文件進行更改時。它跟蹤事物,所以當你和你的好友都修改了同一個文件時,它會在提交時發出警告。大多數情況下,SVN將能夠自動合併您的更改,但有時候您也必須手動分類。但是,再次 - 沒有人可以意外地失去他們的改變,因爲有人重寫了他們修改過的文件。歷史保持這一切,只要你們都試圖覆蓋同一個文件,你就會得到很大的警告和內容。

所以,工作流程...

嘛,大部分是這樣的時間:

  1. 你設置你的資料庫。它最初是空的,就像一個空文件夾。
  2. 然後你「檢查出」空文件夾到某處的本地文件夾。選擇一個新的空文件夾,以保證安全。這沒什麼意義,但它建立了本地文件夾和存儲庫之間的鏈接。也就是說,小.svn文件夾將被創建(您應該保留這些小文件夾並忽略它們)。從現在開始,SVN將知道這個本地文件夾鏡像了存儲庫文件夾,並將提交到該存儲庫文件夾。
  3. 現在,您將所有的東西都複製到新的空文件夾中。
  4. 對SVN說「添加所有文件」。這會將所有文件標記爲在下次提交時應該複製到存儲庫的新增文件。現在,通常會有一些您不想複製到服務器的文件。您包含的內容和不包含的內容取決於您,但通常情況下,所有與程序源相關的內容(包括圖像內容等資源)都將被複制,而由IDE自動重新生成的本地文件將被複製出。想想這樣 - 當另一個人想加入你時,他會從存儲庫中獲取所有文件。哪些與他有關,哪些會被刪除? SVN還包含一個名爲「忽略」的功能,以便它在將來不會提示您有關不必要的文件。
  5. 然後提交。這會將您的文件複製到服務器並在那裏填充文件夾。
  6. 之後,開始下一個功能。完成後,提交。並開始下一個功能。等等其實,只要你喜歡它,你就應該犯下。拇指的規則是 - 保持服務器副本處於正常狀態。如果它不能編譯,或者正在進行一些混亂的重寫,這會導致一半的程序無法正常工作,請不要提交。承諾完成的事情。

就是這樣。如果你和你的好友一起工作,你也會不時地做一個「更新」。這會將您好友提交的更改複製到本地文件夾。

SVN還有其他有用的功能,但這是基本的設置。獲得舒適,然後尋找更多。

+0

你是我的英雄。感謝您以非常明確的方式解釋這樣一個複雜的任務(對我來說)。這會讓我以正確的方式開始。 只有一件事不明確。 I.E.把我想要版本控制我的博客根文件夾是「/home/XXXXX/domains/domain.com/html」。 這必須是我的存儲庫文件夾或我必須創建另一個文件夾,然後導入svn(或下載全部到本地,然後第一次提交)? 少言寡語:資源庫文件夾(在服務器上)必須與我現在用來放置文件的ftp文件夾相同? – Andycap 2010-06-19 15:05:46

+0

我喜歡再次感謝你,最後經過一些動手,我的測試工作。我只是在思考SVN替換FTP而感到困惑。 – Andycap 2010-06-20 11:19:51

+0

@Andycap - 不,倉庫不是真正的文件夾。這更像是一個數據庫。當你通過你的SVN客戶端使用它時,它看起來像一個文件夾,但實際上這裏有很多魔法。閱讀SVN客戶端/服務器的手冊以瞭解如何創建新的空存儲庫。 – 2010-06-20 17:14:59