備份多個版本,費空間,費時間git
難於恢復至之前正確版本 容易引起BUG服務器
解決代碼衝突困難 代碼管理混亂eclipse
難於追溯問題代碼的修改人和修改時間分佈式
沒法進行權限控制 項目版本發佈困難svn
版本控制(Revision control)是維護工程藍圖的標準作法,能追蹤工程藍圖從誕生一直到定案的過程。是一種記錄若干文件內容變化,以便未來查閱特定版本修訂狀況的系統。工具
Svn(Subversion)是近年來崛起的版本管理工具,在當前的開源項目裏(J2EE),幾乎95%以上的項目都用到了 SVN。Subversion 項目的初衷是爲了替換當年開源社區最爲流行的版本控制軟件CVS,在CVS的功能的基礎上有不少的提高同時也能較好的解決CVS系統的一些不足。測試
SVN基本交互流程圖google
SVN 工做的的基本思路:在一臺服務器上創建一個倉庫,倉庫裏能夠存放許多不一樣項目的源程序。由倉庫管理員統一管理這些源程序.這樣,就好象只有一我的在 修改文件同樣.避免了衝突.每一個用戶在使用倉庫以前,首先要把倉庫裏的項目文件下載到本地。用戶作的任何修改首先都是在本地進行,而後用 SVN 命令進行提交,由 SVN倉庫管理員統一 修改.這樣就能夠作到跟蹤文件變化,衝突控制等等。 .net
創建svn倉庫插件
命令svnadmin create 倉庫名稱
倉庫目錄說明
locks目錄:用放置hook來放置Subversion文件庫鎖定數據的目錄,用來追蹤存取文件庫的客戶端。
conf目錄:是這個倉庫的配置文件(倉庫的用戶訪問賬號、權限等)。
注意事項
.svn 這個隱藏目錄記錄着兩項關鍵的信息: 工做文件的基準版本和一個本地副本最後更新的時間戳。千萬不要手工修改或刪除這個 .svn 隱藏目錄和裏面的文件!!! 不然將會致使你本地的工做拷貝 (靜態視圖)被破壞,沒法再進行操做。
下載地址: http://www.visualsvn.com/server/download/
當前使用的版本: VisualSVN-Server-2.7.3
TortoiseSVN是Subversion版本控制系統的一個免費開源客戶端,不須要爲使用它而付費。它是 Subversion 的 Windows 擴展。可使你避免接觸 Subversion 枯燥並且不方便的 Command Line。它徹底嵌入 Windows Explorer,使用時只需在正常的窗口裏右鍵操做就能夠了。
下載安裝 http://tortoisesvn.net/downloads
下載SVN插件(http://subclipse.tigris.org)
解壓到一個文件夾中
進入 eclipse 安裝目錄中 dropins 目錄並建立一個 subclipse.link 的文本文件(文件名任意)。內容爲:path=eclipse_svn_site-1.6.5.zip解壓路徑(注意:路徑中須要把‘\’替換成‘/’)
建立三個頂級目錄
/trunk 存放開發的「主線」
/branches 存放支線副本
/tags 存放標籤副本
Subversion 提供了主線、分支管理技術,使得在軟件開發中能夠更方便、靈活的對項目的進度、版本的發佈、版本的維護、軟件功能的拓展與定製進行管理。 主線(trunk):一個項目創建時就存在,並伴隨着項目的成長而不斷的成長,直到項目徹底結束。 分支(branch):通常是指功能分支,例如:咱們的某個項目要添加一個模塊,但這個模塊又比較複雜,實現難度比較大。爲了避免影響主線的穩定,咱們就能夠建立一個功能分支來專門開發這個模塊,當這個模塊開發完成之後,並經過測試部門的各項測試,再合併到主線中去。再好比,咱們的交警 GPS 項目已經開發完成了,可是這個項目是給泉州交警作的,如今咱們又接到了一個交警項目,不過是要給廈門交警大隊的。如今廈門交警大隊要求咱們給他們定製一些功能。咱們又不想再主線上進行修改,這個時候,咱們也能夠建立一個分支,並在這個分支上開發,這時是不會對主線形成影響的。等給廈門開發完成了之後,咱們發現,他們要求的有些功能其實很好,之後別的地方可能也須要一樣的功能。這個時候咱們就能夠根據咱們的須要,將有用的模塊有選擇的合併到主線中來。 標籤(tag):標籤和分支同樣,也是一個目錄,不過這個目錄中通常存放的是發佈的信息(固然咱們也能夠只用分支,可是用標籤更清楚明瞭一些)。仍是拿咱們的交警項目來舉個例子:咱們的交警項目開發完成了之後,要拿給泉州交警大隊用了,也就是要發佈(release),假設這個版本叫作1.0.2。這個時候,咱們就要建立一個標籤,當泉州交警大隊用了三個月,發現了一個 BUG,咱們只須要簽出這個標籤中的代碼(它和咱們剛提供給泉州交警大隊時候的是如出一轍的),進行調試,並修正這個 BUG。而後再發佈一個版本,假設叫作1.1.0,這個時候咱們就在建立一個 1.1.0的標籤…… 要注意,標籤目錄裏面的代碼,要進行嚴格的控制,除了修正 BUG 外,不能作任何其餘的事情。
Linus的第二個偉大做品。2005年因爲BitKeeper軟件公司對Linux社區中止了無償使用權。Linus迫不得己本身開發了一個分佈式版本控制工具,從而Git誕生了。 目前使用Git做爲版本控制的開源軟件:Linux kernel,Android, jQuery, Ruby on Rails,Debian… Eclipse上使用Git的項目數量也已經超過了使用SVN的倉庫數。
分佈式,強調個體
公共服務器壓力和數據量都不會太大
任意兩個開發者之間能夠很容易的解決衝突
離線工做
每日工做備份
能夠吃後悔藥
Git軟件下載安裝 https://code.google.com/p/msysgit/downloads/list 咱們使用版本Git-1.7.9版本
創建Git倉庫
git init --bare 庫名稱
倉庫目錄說明
hooks目錄:腳本文件的目錄。
info目錄:保存了不但願在 .gitignore 文件中管理的忽略模式的全局可執行文件
objects目錄:存儲全部數據內容
refs目錄:存儲指向數據(分支)的提交對象的指針
config文件包含了項目特有的配置選項
description文件僅供 GitWeb 程序使用
HEAD文件指向當前分支
下載安裝 https://code.google.com/p/tortoisegit/wiki/Download咱們目前使用的版本: TortoiseGit-1.7.7.0
下載EGit插件(http://www.eclipse.org/egit/)
下載到的插件爲壓縮包,能夠直接在Eclipse中安裝: Eclipse -> Help -> Install new Software