1 TortoiseSVN的基本使用
SVN 的一些概念
- repository(源代碼庫):源代碼統一存放的地方
- Checkout(提取):當你手上沒有源代碼的時候,你需要從repository checkout一份
- Commit(提交):當你已經修改了代碼,你就需要Commit到repository
- Update (更新):當你已經Checkout了一份源代碼, Update一下你就可以和Repository上的源代碼同步,你手上的代碼就會有最新的變更
日常開發過程其實就是這樣的(假設你已經Checkout並且已經工作了幾天):Update(獲得最新的代碼) -->作出自己的修改並調試成功 --> Commit(大家就可以看到你的修改了) 。
如果兩個程序員同時修改了同一個文件呢, SVN 可以合並這兩個程序員的改動,實際上SVN管理源代碼是以行為單位的,就是說兩個程序員只要不是修改了同一行程序,SVN都會自動合並兩種修改。如果是同一行,SVN 會提示文件 Conflict, 沖突,需要手動確認。
1.1 瀏覽倉庫
彈出如下界面:
點擊ok,要求輸入用戶名和密碼
1.2 checkout 檢出
Checkout 操作是用來從版本庫創建一個工作副本。工作副本是開發者私人的工作空間,可以進行內容的修改,然后提交到版本庫中。
Checkout 操作將SVN倉庫的代碼烤到本地,比如你現在參與一個團隊項目,項目代碼在你之前肯定已經寫了很多了,你可以通過checkout項目代碼,獲得整個項目。
進入如下界面:
其中URL我可以在SVN服務器獲取到。
點擊ok,彈出如下界面。
點擊ok,此時桌面多出一個圖標。
此時,本地的lucky目錄與svn中的lucky倉庫關聯上了。
注意事項:
.svn這個隱藏目錄記錄着兩項關鍵信息:工作文件的基准版本和一個本地副本最后更新的時間戳,千萬不要手動修改或者刪除這個.svn隱藏目錄和里面的文件!!,否則將會導致你本地的工作拷貝(靜態試圖)被破壞,無法再進行操作。
TortoiseSVN圖標介紹
(1)一個新檢出的工作復本使用綠色的對勾重載,表示Subversion狀態正常。
(2)在你開始編輯一個文件之后,狀態就變成了已修改,而圖標重載已變成了紅色感嘆號。通過這種方式,你可以很容易地看出那些文件從你上次更新工作復本被修改過,且需要提交
1.3 執行變更
當檢出之后,你就可以做很多操作來執行變更。編輯是最常用的操作。你可以編輯已存在的文件,例如進行文件的添加/刪除操作。
你可以添加文件/目錄。但是這些添加的文件目錄不會立刻成為版本庫的一部分,而是被添加進待變更列表中,直到執行了 commit 操作后才會成為版本庫的一部分。
同樣地你可以刪除文件/目錄。刪除操作立刻將文件從工作副本中刪除掉,但該文件的實際刪除只是被添加到了待變更列表中,直到執行了 commit 操作后才會真正刪除。
Rename 操作可以更改文件/目錄的名字。"移動"操作用來將文件/目錄從一處移動到版本庫中的另一處。
<1>add操作
在svntest項目文件下,新建一個b.txt文件,提交到版本庫的方法如下2種:
1. 先提到變更列表中,再commit到配置庫中,選擇新增文件,右鍵SVN菜單執行“Add“操作提交到”變更列表中”,然后右鍵SVN菜單執行”SVN Commit”提交到版本庫中。
2. 不提交到變更列表中,而是直接commit配置庫中,選擇該文件,右鍵svn菜單執行”SVN Commit”操作。
打開桌面上的本地lucky文件夾
此時會出現下圖
這就說明了這個ItemsDao.java文件已經添加到了變更列表中
<2>delete操作
標記刪除操作,本地文件會刪除,我們需要進行提交,才能真正從服務器刪除
彈出如下界面:
<3>commit操作
將ItemsDao.java文件添加到svn服務器
此時彈出如下界面:
提交結果圖:
點擊ok即可。
<4>查看當前日志
彈出如下界面:
<5>update 操作
顧名思義,update 操作是用來更新版本庫的。這個操作將工作副本與版本庫進行同步。由於版本庫是由整個團隊共用的,當其他人提交了他們的改動之后,你的工作副本就會過期。
讓我們假設 Tom 和 Jerry 是一個項目的兩個開發者。他們同時從版本庫中檢出了最新的版本並開始工作。此時,工作副本是與版本庫完全同步的。然后,Jerry 很高效的完成了他的工作並提交了更改到版本庫中。
此時 Tom 的工作副本就過期了。更新操作將會從版本庫中拉取 Jerry 的最新改動並將 Tom 的工作副本進行更新。
操作方法如下:
更新本地代碼與SVN服務器上最新的版本一致,只要在需要更新的文件夾上點擊右鍵或者在文件下空白處點擊右鍵,選擇”SVN Update” (獲取指定版本中的內容,點擊右鍵執行SVN菜單中的“Update to reversion“),就可以了。
彈出如下界面:
<6> SVN還原(SVN Revert)
右擊想要回退的文件或者文件夾,在TortoiseSVN彈出菜單中選擇”Update to reversion…” 然后會彈出一個窗口,如下:
比如說我們要回退到第1個版本只需要在Revision中填寫相應的版本號,然后點擊ok即可。
<7>檢查修改(Check for modifications)
此功能可以顯示你所做的修改有哪些還沒有提交的,此功能不光能看到對文件的修改變化,所有的變化都能看到,包括增加文件或者目錄,刪除文件或者目錄,移動文件或者目錄等,如果你點擊了檢查版本庫,那你還可以看到版本庫里的改動,既別人提交了哪些文件的改動,你還沒更新到本地,如下:
<8>Import將本地資源導入到svn服務器
<9>沖突問題與解決
多個用戶同時操作同一個文件時,就可能產生沖突情況。
2.IDEA下 SVN 配置與使用
(1)IDEA下svn配置
前提是我們的電腦上已經安裝了TortoiseSVN.
(2)share project
彈出如下界面:
進入如下界面:
彈出如下界面:
點擊ok,等待上傳完成。
上傳完成后,頂部菜單欄會多出幾個按鈕。
上圖5個按鈕的作用:
<1>Update Project 更新項目
<2>Commit changes 提交項目上所有變化文件
<3>Compare with the Same Repository Version 當前文件與服務器上該文件通版本的內容進行比較。如果當前編輯的文件沒有修改,則是灰色不可點擊。
<4>Show history 顯示當前文件的歷史記錄
<5>Revert 還原當前被修改的文件到違背修改的版本狀態下
參考文獻:https://www.cnblogs.com/0zcl/p/7309766.html