歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 用開源軟件Subversion進行個人文檔管理

用開源軟件Subversion進行個人文檔管理

日期:2017/2/27 14:12:51   编辑:更多Linux

  有一個開源版的控制系統,或者說是修訂版的控制系統,名為Subversion (簡稱為svn),正在快速受到開發者的喜愛。它口碑極佳,可在線下載,完全免費,有大量文字稱贊它的高效和實用。它穩定,靈活,能干,安全,免費,開源,並且能夠用於任何規模的項目。

  以前的控制系統明星軟件是CVS, 全稱為並行版本系統(Concurrent Versioning System)。 Subversion出現之初只是為了給尊敬的CVS打造一個堅實可敬的基礎,並根據多年以來CVS用戶總結的經驗來加以改進。它在很多方面如此成功,它的普及就是證據。

  Subversion 幾近通明的使用方法,跨多操作系統平台上大量可用的客戶應用,以及Subversion的低成本,和易於管理等因素,使得它不再僅僅被用來管理源代碼。對於內容可以被描述為“項目”或者“項目集”的目錄結構來說,Subversion提供了一個近乎實時的備份系統。越來越多的BSD, Linux, 和 OpenSolaris用戶在傳統用途之外,還用Subversion的版本控制功能來保存文件目錄。

  安裝

  當Windows提供了一步安裝方式時,Subversion在開源社區的迅速走紅絕對與它在BSD和Linux軟件檔案中的易於使用不無關系。例如,在Debian GNU/Linux中安裝Subversion,只需用到管理界面和命令語句和命令行客戶端就能完成,只要以根用戶身份登錄,輸入apt就可完成 subversion的安裝。

  類似情況下,在標准的Fedora Core Linux的YUM軟件包管理器中安裝Subversion,也只需要命令yum。對於FreeBSD, 無論使用pkg還是-C /usr/ports/devel/subversion進行安裝都可以,使用哪種方法取決於您想從二元軟件安裝還是從源代碼進行安裝。即使MacOS X 也提供了能夠安裝Subversion的軟件檔案。

  在某些情況下,subversion的版本控制功能要比很多普通備份工具出色很多。最突出的當然是軟件開發項目中的源代碼控制。另外一個就是文檔管理。由於用戶的活動,文檔和目錄的內容會經常發生變化,迫使開發者采用一種方法撤消一些刪改,看看過去的版本。一般是通過changelog來實現,在版本控制系統中專業的稱呼為 “修訂記錄”。

  一種自動修訂記錄管理機制對於非專業編程人員來說可能非常熟悉,因為最著名的wiki軟件就采用這樣的技術來跟蹤內容的變化過程,並能夠通過返回去掉不好的修改。

  做為修訂記錄機制的一部分,Subversion這樣的版本控制系統不僅僅維護復制當前版本文件的中央數據庫,還要一路維護從文件進入版本控制以後直到當前所進行的修訂日志。任何從事軟件開發工作時間夠長的人都能告訴你能夠返回到已知良好狀態的功能有多麼重要。這正是任何版本控制軟件的中心任務:也是它們得以存在的最主要原因。

  Subversion還有更多的功能。例如,當兩個人同時編輯同一文件時,它能解決版本沖突的問題。在真實世界裡,那些實踐經驗豐富,經常在版本控制文件中提交工作,在提交變化前先更新本地文件的用戶,很少與他人的工作發生沖突。這種少見的情況Subversion也能通過內置的沖突解決方案進行解決。它還支持將主開發線上經過修改的分支與其他開發分支的接合,對不同程度用戶的不同程度的校驗和升級許可,以及一些其他一些項目經理們會覺得非常有用的性能。

  個人文件管理

  版本控制系統的另外一個用處就是他們允許您在不同地點,使用多台計算機共同開發同一項目,而無需使用任何USB存儲設備或者CD-RW介質。只要你在工作用電腦上安裝了版本控制代理軟件,並登錄版本控制魔法發揮作用的服務器,您就可以找到項目的最新版本並開始工作。

  由於同一數據的不同副本在校驗副本更新到不同的客戶端計算機時自動同步,因此Subversion 這樣的控制系統也可用做一套收集在一起的文檔的備份系統。這包括您每天的個人文檔,以及源代碼等;也就是說,如果您將任何小到不需要占用帶寬來進行每周的備份的相關數據集合看做是“項目”,就可以利用Subversion來節省復制數據的時間。個人文檔目錄一般都非常符合這一特點,特別是當您所保存的文件大部分都是幾兆大的音樂、視頻及高清晰度圖片等文件時,絕對適用。

  如果你是那種了解日常備份在預防硬件及文件系統故障中的重要意義的用戶,你會發現您所進行的不過是日常備份,因為操作Sebversion所要進行也就傳統的備份系統配置和向CD-R中復制數據。Subversion所進行的如此簡單的個人文件備份能夠節省大量時間,或者至少能將你從延遲備份的負擔中解放出來,你所需要的只是另外一台運行著Subversion服務器軟件的計算機。

  由於Subversion並不象Visual SourceSafe和ClearCase這樣專屬軟件的圖形化界面那樣,指定單一用途,因此它能夠很容易的被用於一些非標准的使用場合,如標准文檔控制等。你依然有自己的GUI環境,但是由於有很多專為Subversion使用的GUI客戶端軟件,而Subversion也被集成進了很多其他的GUI工具,如Eclipse,甚至通過TortoiseSVN客戶端進入了微軟公司的資源管理器。

  配置和安裝

  使用Subversion進行文檔管理最可能的情況是在微軟的 Windows系統中使用TortoiseSVN 或者在免費的類UNIX操作系統的軟件管理工具中使用Subversion客戶端軟件。如果要安裝基本Subversion,你可以在BSD或者 Linux軟件的檔案庫中找到服務器軟件,命令行客戶端以及管理工具,因此如果你不需要圖形化用戶界面的話,你根本無需另外安裝任何軟件。

  在微軟的Windows服務器中安裝Subversion,你可能會用到Subversion項目的維護者Tigris.org網站上提供的SVN 1-Click Setup 安裝程序。許多使用Subversion的微軟Windows用戶選用BSD服務器代替Windows服務器,而且這樣還不用分別安裝。

  在服務器上安裝了服務器軟件以後,您需要創建一個版本控制知識庫。下面的例子假設了一個類UNIX的shell command 環境。括弧中的語句可根據您的需求進行更改。不要在操作中輸入括弧。“#”標志表示您以根用戶身份登錄,或者使用sudo進行了管理員訪問。在 [nnnn]中填入你要訪問的subversion知識庫的userid 值。

更多內容請看Spring開源框架技術 常用軟件加密寶典 軟件插件專題,或

  列 A

  # addgroup [svn-users]

  # usermod -u [nnnn] -G [svn-users]

  # mkdir -m 770 [/home/svn-repos]

  # chgrp [svn-users] [/home/svn-repos]

  # svnadmin create --fs-type fsfs [/home/svn-repos]

  請注意一定要在fs-type選項中明確“fsfs”。因為默認情況下,Subversion知識庫文件系統的數據庫的最初名稱為“bdb”,已被證實有些不穩定。新版本中默認名稱已經更改為fsfs,但是有些老版本及非標准版的Subversion依然使用bdb。出於安全起見,還是要在創建新知識庫時明確一下fsfs數據庫格式,保證系統能夠更穩定。

  在服務器上建完知識庫目錄以後,就可以在這個目錄下創建實際的項目知識庫。也許是出於直覺,你不應該直接在知識庫內進行。列B告訴你如何通過單獨目錄在知識庫目錄中創建包含有被丟棄的文件的知識庫,然後再通過“check in”登記來創建項目知識庫。

  最後以前面命令中指明的用戶帳號登錄。從所用用戶帳號的根目錄開始按步驟進行。使用非根用戶身份登錄,前面顯示“$”符號。同樣的,[ ]括弧中的內容可根據你的需要進行修改。記得在輸入時不要輸入括弧。

  列B

  $ mkdir [project]

  $ cd [project]

  $ toUCh [file.txt]

  $ svn import -m "[importing file to create project]" . file:///[home/username/svn-repos/project]

  在服務器上創建項目知識庫以後,就完成了。 在將項目知識庫導入知識庫之前需要刪除剛才創建的項目目錄,因為目錄中的數據現在已經安全的保存在了服務器上。既然知識庫是通過一個空文件使用touch command創建完成餓,所以刪除也不會造成任何損失。

  在客戶端電腦上你可能需要編寫項目或者訪問文檔,所以你還需要查看知識庫中的內容並創建一個本地副本。范例如下。同樣的也是假設您使用免費的類UNIX操作系統,如BSD,或者OpenSolaris這樣的Linux版本。.

  列 C

  $ cd [/home/username]

  $ mkdir [svn-local]

  $ cd [svn-local]

  $ svn co svn+ssh://[hostname/home/username/svn-repos/project project]

  這時,一般都需要三次輸入保存知識庫的系統的密碼。在本例中,除了你選擇的操作系統,您還需要在客戶端系統上安裝功能完全的SSH客戶端和SSH服務器。 Svn命令知道如何通過SSH傳達網絡需求,為客戶端和服務器系統之間提供安全的加密連接,保護您的用戶名、密碼和數據不受可能注意您的網絡的惡意安全破壞者侵害。

  Svn-local目錄不是必需的。如果你願意的話,你可以就把最新校驗過的項目或者文檔目錄直接保存到您的用戶帳號主目錄下。一般最好將由 Subversion知識庫維護的目錄與備份方式不同的目錄分別保存,以免弄混。在以前的例子中,你都無需為重要數據“項目”的目錄命名,所以也不需要為最初的空文件“file.txt”命名。

  對項目的本地副本核完畢,就可以刪除客戶設備上的項目目錄。然後就需要在目錄內添加其他在Subversion中保存的文件,並在服務器上的Subversion知識庫中進行核對。列D就為操作范例。

  列 D

  $ cd [/home/username/svn-local/project]

  $ svn rm file.txt

  $ cp -R [/home/username/project/*] .

  $ svn add `ls -R`

  $ svn ci -m "[added all base files to the project Directory]"

  cp –R命令能將目錄中重要數據目錄中的全部內容(在這裡為/home/username/project) 復制到當前目錄中 (由單獨的句子指定)。svn add `ls -R` 命令將這個目錄下全部內容以及所有的子目錄添加到本地項目目錄副本中的版本控制中。svn ci 命令將當前副本提交到服務器上的主目錄中。在添加命令以後,svn客戶端工具會顯示添加文件列表。Ci命令會要求密碼以確保你有權限進行提交。

  Subversion的使用

  不同的圖形化用戶界面的使用方法也不同,各個用戶的使用方式也不同。對於使用命令行的客戶,最重要也是最基本的升級、管理和提交項目文件的命令是以下這些:

  svn up – 通過主知識庫更新本地副本。在開始對任何文件的工作前都要進行更新。如果別人訪問過知識庫,也要在提交之前進行再次更新,是個好習慣。

  svn status – 告訴你哪些文件被修改過,哪些經過增改但還未被提交,哪些創建以後還未添加到版本控制,哪些文件神秘消失而沒有從版本控制中刪除(最大的可能是因為你忘記使用svn rm 替代 simply rm),以及哪些文件已經從版本控制中完全刪除。

  svn add – 我們剛才演示過,用來在版本控制中添加文件。

  svn rm – 從版本控制中刪除文件。這樣也會從本地文件系統中將相關文件刪除。

  svn mv – 將知識庫中本地副本中的某個文件移動到另一個地方,而不會造成Subversion數據庫的混亂。它的工作原理有些類似標准的mv 命令,但是它只用於版本控制下的本地項目副本。

  svn mkdir – 創建目錄,與普通的mkdir 命令很類似,但是它同時能夠將目錄自動加入版本控制。

  svn ci – 能將知識庫中本地副本當前目錄下以及其內部所有子目錄內發生的全部變化提交給主知識庫。在這一命令生效之前,必須首先解決svn狀態命令報告的標有問號的部分(未知的文件狀態)。在沒有疑問以後,svn ci 會打開默認文本編輯器輸入提交信息。如果你需要查找項目中較早版本中的文件就會用到這些文本。-m 選項能夠被用來明確命令行中的提交信息,如上面創建和使用Subversion知識庫中所演示的那樣。這樣做的目的在於給已提交的變化做出標記,以防以後什麼時候可能會對之前做的修改進行分類。

  svn help – 為你提供大量關於Subversion命令行客戶端的使用信息,例如對每個svn命令深入的解釋和舉例,以及除這些以外更多命令的使用方法。您可以通過輸入svn help add(這裡假設你需要獲得關於“add”命令的信息)獲得更多關於特定svn命令的信息。

  本文並非神化Subversion,只是對Subversion版本控制軟件進行了有益的介紹,版本控制軟件的使用是任何敬業的程序員都要使用的技巧。本文中的這些例子能夠為您提供真切的幫助,即使您不是程序員也會感覺有益。

更多內容請看Spring開源框架技術 常用軟件加密寶典 軟件插件專題,或




Copyright © Linux教程網 All Rights Reserved