Skip to main content

版本跟踪Subversion(SVN)初學者

版本跟踪Subversion(SVN)初學者

Geoffrey Carr

你有沒有想過一個項目,能夠跟踪你的變化並恢復它們? How-To Geek解釋瞭如何使用流行的版本跟踪系統Subversion(a.k.a SVN)。

圖片來自Clearly Ambiguous

普雷洛格

本指南旨在讓您能夠使用subversion客戶端,如果有的話,還可以使用* DD-WRT路由器。本指南絕不是Subversion的權威指南,可以在Subversion Red Book上找到很多信息。本指南僅旨在為您提供最基本問題的簡寫答案。

概觀

為什麼您希望能夠“檢出”使用版本控制系統的軟件項目的最新代碼,可能有很多原因。這樣做可以使您從最新的未發布的更改中獲益,幫助進行測試甚至開發。在本指南中,我們將介紹一些基本的SVN術語,說明如何在Linux,Windows上安裝SVN客戶端,以及是否有一個支持OPKG的DD-WRT路由器。我們還提供了一個可以檢出並用於所述路由器的項目示例。

什麼是Subversion?

Subversion絕不是唯一存在的版本控制系統,替代品包括Git(由Linux內核創始人Linus Torvalds創建),Mercurial和PerForce等等。話雖如此,它是免費的,它已經成熟並在全世界廣泛使用。

出於顛覆“紅皮書”:

Subversion is a free/open source version control system (VCS). That is, Subversion manages files and directories, and the changes made to them, over time. This allows you to recover older versions of your data or examine the history of how your data changed. In this regard, many people think of a version control system as a sort of “time machine.”

注意:這本書 關於顛覆的最終知識集合,建議您在所有與Subversion相關的主題上參考它。

什麼是版本控制?

版本控制是一個保存某個時間點項目狀態的過程。這種過程通常用於管理軟件開發,因此工作可以繼續改進項目或添加功能,同時能夠跟踪上一個整體“保存”點的變化。詳細說來,這種程序對於一個人來說可能是有用的,但對於一組人來說更是如此,所有人都在同一個項目上工作。這是因為,通常,當作為一個小組處理項目時,責任分配和不同的人改變項目的不同方面。如果沒有版本控制機制,就很難讓每個人都同步其他人的最新工作變更。

術語

存儲庫 存儲庫是保存來自所有不同位置的所有數據的位置。在顛覆世界中,從客戶端的角度來看,它是保存項目數據庫的服務器。此數據庫包含項目中包含所有過去版本的所有文件。

調整

創建存儲庫時,會為其指定修訂號零(0)。每次執行提交時,此數字都會增加一(1)。版本號對於存儲庫是全局的。也就是說,存儲庫中的單個文件沒有單獨的修訂號,即使該文件中沒有針對該特定提交進行任何更改。

工作副本

工作副本是特定版本的本地副本(或“結帳”)。通常這個版本在簽出時是“最新的”(也稱為“頭”),但可以請求前一個版本。用戶可以使用本地副本來處理他/她想要的任何內容,並且知道在最壞的情況下,他們可以再次簽出代碼。此外,這個副本是“私人的”。這是因為在您更新或提交副本之前,您不會看到其他人的更改,也不會看到您的更改。

更新和衝突解決

可以更新本地工作副本。也就是說,如果您“簽出”某個版本,並且在您工作時,存儲庫上的版本已更新,您可以將工作副本更新為最新版本。實際上,在更新到最新版本以匹配存儲庫之前,服務器將阻止您提交更改。這樣做是為了在您考慮提交對存儲庫的更改之前強制您在本地解決衝突。

合併

合併是指將更改的代碼混合到一個版本中的過程。它也可能需要解決衝突。

提交

提交是將對本地副本所做的更改合併回存儲庫的過程。這是該過程中最危險的部分,因為您所做的更改可能會影響使用同一存儲庫的其他人。這就是為什麼通常在經過一些考慮之後,在團隊的共識和解決任何合併衝突之後完成的原因。

工作流程

使用subversion時用戶角度最基本的工作流程如下:

1.簽出現有代碼(通常是“頭部”)。 2.進行更改,添加文件並開發代碼。 3.更新到最新版本,以確保本地副本與存儲庫上的更新同步。 4.必要時在本地合併並解決衝突。 5.將合併的更改提交到存儲庫。 6.轉到第2步。

讓我們開裂

安裝客戶端

為了能夠使用subversion,您需要在計算機上安裝客戶端。

在Linux上

您只需要安裝包。在Ubuntu / Mint上,這將完成:

sudo aptitude install subversion

關於DD-WRT

如果您已按照“如何在家庭路由器上安裝附加軟件(DD-WRT)”,您只需發出以下命令即可安裝svn客戶端:

opkg update; opkg install subversion-client

在Windows上

雖然我們深刻的極客用戶可能會開始忘記GUI有時甚至存在,但不是每個人都有。如果你想使用Windows客戶端連接到SVN存儲庫,到目前為止最流行的是“Tortoise”。要使用它,只需下載程序並以常規的“下一步,下一步,完成”方式安裝。

創建“存儲庫”

雖然我們不會在本指南中詳細介紹如何設置subversion服務器,但對於新手用戶來說,Google替代品並不是一個糟糕的開端。要創建Google存儲庫:

  • 前往Google Code託管網站並“創建”一個新項目。

  • 在下一頁中,填寫必填字段並選擇要進行顛覆的“版本控制系統”類型。

    注意:在為項目選擇一個許可證之前,您可能想要了解Google提供的許可證之間的區別。
  • 單擊“創建項目”。
“結帳”您的工作副本

創建項目後,您應該能夠在“源”選項卡中找到有關如何訪問項目的說明。

Google代碼的優點在於它將為您的項目啟用匿名只讀版本。如果您不想處理創建自己項目的麻煩,可以匿名檢查此作者的存儲庫。

關於hotfortech項目的一個注意事項:這個項目是為了在How-To Geek(我個人使用)上添加到DD-WRT的功能以及一些個人調整的包裝器。雖然這個項目適合與howtogeek上發表的文章一起工作,但它仍然是我的私人項目。也就是說,它非常適合我的布法羅路由器(AR71xx架構),我的個人突發奇想,偶爾會出現笨拙。

在Linux / DD-WRT上

創建要使用的目錄,例如在DD-WRT上,可以是:

mkdir -p /jffs/svn; cd /jffs/svn

Linux上的完整命令包括SVN命令本身,“checkout”指令,存儲庫的地址以及要檢出的目錄。創建一個空目錄並執行以下命令:

svn checkout http://hotfortech-dd-wrt.googlecode.com/svn/trunk/ hotfortech-dd-wrt-read-only

請注意,在上面的示例中,正在檢出只讀版本。如果您選擇創建自己的存儲庫,則需要使用httpS鏈接。

在Windows上

因為tortoise是shell擴展,所以您需要使用Windows文件資源管理器的上下文菜單(右鍵單擊)來使用它。實際上,如果您嘗試從開始菜單調用它,您將獲得:

  • 創建一個空目錄。
  • 右鍵單擊它以顯示上下文菜單。
  • 選擇“SVN Checkout”:

  • 將項目鏈接(如果有的話)複製並粘貼到“URL”文本框中:

  • 根據項目的大小,這可能需要一段時間,但是當“結帳”完成後,您應該看到類似的內容:

  • 你可以開始發展。

“更新”和“合併”您的工作副本 如果您與同事一起處理代碼,或者您自己正在從多個位置(即筆記本電腦,台式機甚至路由器)更新代碼,則必須在提交最新更改之前更新工作副本。

在Linux / DD-WRT上

在這些POSIX系統上執行此操作的命令很簡單:

svn up

在Windows上

  • 右鍵單擊工作目錄並選擇“SVN Update”:

  • 如果您遇到衝突,請嘗試按照屏幕上的說明進行操作,並根據您的判斷來判斷如何處理衝突。

“提交”您的更改 就是這樣,您應該沒有衝突,並準備好使用您的更改來更新存儲庫。 這裡需要注意的一點是,通常的做法是在提交中添加“日誌”消息,以便能夠輕鬆回憶更改的原因。實際上,Google的存儲庫使其成為提交的強制性預先要求。

在Linux / DD-WRT上

這是我對hotfortech項目提交的一個例子,該項目將其提升到版本19:

svn commit -m “updated to reflect new ant-ads pack link”

在Windows上

  • 右鍵單擊工作目錄並選擇“SVN Commit”:

  • 您應該看到一個窗口,讓您記下日誌消息:

  • 點擊“確定”,當提示輸入密碼時,請提供Google生成的密碼。
  • 如果提交成功,您應該看到類似的內容:

  • 就是這樣,你應該能夠像BOSS那樣提交。

最後的評論 這應該足以讓你入門。建議您閱讀SVN參考書籍,以便更深入,更好地掌握SVN的所有用法,選項和注意事項。此外,我們再次提醒您(顛覆)並不是唯一的版本控制系統,而GIT(由Linux內核創始人Linus Torvalds創建)近年來似乎越來越受歡迎。

如果您選擇從路由器上的hotfortech項目運行“running-config.sh”,您會發現它目前將為您安裝:anti-ads-pack,Opkg geek-init腳本,以及諸如完整的GNU“ls”,“less”,“BASH”等等。

/jffs/svn/hotfortech-dd-wrt/running-conf.sh

更多功能尚待處理,將來會添加。


系統管理員將編寫代碼以避免編碼。

Link
Plus
Send
Send
Pin