今天花了一整天,總算把SVN弄的差不多了~雖然今天花很多時間,但是,我知道這個系統會替我以後寫程寫省很多時間(我猜的)~
那我們就用一個完整的簡單例子來說明吧~
環境:Linux文字模式、Google的Project Hosting
申請跟測式的步驟在程式設計的版本控制 - SVN說明的應該很清楚了~這裡我們直接用例子來說明吧~
建立一個新的project吧~我這裡的示範project是goodmorn,那當然啦~我的帳號是superporter2001
這裡先假設已經看過前一篇文章,在google的Project Hosting建立一個新的Project叫做goodmorn
我們在建立一個~/svn資料夾,並且進入這一個資料夾
[root@host ~]# mkdir svn
[root@host ~]# cd svn
將資料 checkout 回來,也就是說把google Project Hosting的goodmorn Project下載到目前目錄下的goodmorn
[root@host ~/svn]# svn checkout https://goodmorn.googlecode.com/svn/trunk/ goodmorn --username superporter2001
系統會多一個~/svn/goodmorn的資料夾
在我們寫完一個main.cpp檔案完之後,這一個檔案的目錄在~/svn/goodmorn下,我們將此檔案(目錄)新增進 svn中
[root@host ~/svn]# svn add goodmorn/main.cpp
然後,我們上傳到svn中
[root@host ~/svn]# svn commit goodmorn
耶~那這個時候大家可能會說~那我一個檔案要add一次~那我很多檔案不就要add很多次?其實不用,假設在~/svn/goodmorn/testfile/下有3個檔案a.jpg、b.jpg、c.jpg,我們只要打以下指令
[root @host ~/svn]# svn add goodmorn/testfile/
它就會把testfile下的檔案都加進去啦~
這裡有一個例子要大家注意~若我新增一個testfile2,那我要如何更新到svn server呢?有兩個方法
方法1
[root@host ~/svn/goodmorn]# mkdir testfile2
[root@host ~/svn/goodmorn]# svn add testfile2
方法2
[root@host ~/svn/goodmorn]@ svn mkdir testfile2
這裡要跟各位說的是,若有要move、copy、mkdir的話,就用svn內建的指令吧~可求助svn help
注意,當專案納入subversion的控管後,若要對專案內的檔案作刪減增加,必須都用client軟體內的對應功能來操作,否則可能會有問題。另外就是專案下的每個目錄中皆有.svn的隱藏目錄,這是subversion用來控管的目錄,請不要刪除或修改裡面的內容。
同時,我發現一個情況~我本來在其它資料夾放置我之前寫好的程式碼,我把它copy到~/svn/goodmorn,但是,確發生問題~
svn: warning: 'car-sim_1.00' is already under version control
耶~它說早就在控管中~但是,commit它確沒有上傳~找到一個強制的方法~[root@host ~/svn]# svn import car-sim_1.00 https://goodmorn.googlecode.com/svn/trunk/硬是把它上傳上去,等一下再checkout下來~就正常了~
會照成上面的原因是因為在要上傳的資料夾中,有.svn的檔案存在,所要上傳時,系統才會說因為資料夾已在控管中,決解方法是把隱藏檔.svn刪除~
[root@host ~]# find ./ -name .svn -exec rm -rfv {} \;
就可以把目前目錄下(包含子目錄)的.svn檔案全部刪除~
與svn server比較檔案差異也很好用喔~
[root@host ~/svn/goodmorn]# svn status
SVN 檔案狀態資訊:
- ?: 此檔案不存在 SVN 裡面
- A: 此次新增的檔案
- C: 此檔案已經有人改過, 合併不成功, 需要人工介入
- D: 此次移除的檔案
- M: 此檔案有修改過
- U: 此檔案有被更新過
沒有留言:
張貼留言