<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Knight of the round table

    wansong

    linux svn 常用命令

    apt-get install subversion
    apt-get install libapache2-svn

    http://blog.csdn.net/tianziczj/article/details/6180745
    http://www.cnblogs.com/PatrickChen/archive/2010/07/02/1769877.html
    http://www.wowcms.com/server/post_7930.html    主要參考這篇文章
     

     

    http://www.subversion.org.cn/svnbook/nightly/svn.ref.svn.c.diff.html

     


    客戶端Rabbitvcs 安裝:

    http://groups.google.com/group/rabbitvcs/browse_thread/thread/401666c0b327dd29
    http://yhjhoo.iteye.com/blog/839372

    參考rabbitvcs-0.14beta1根目錄下的 README AND clients/nautilus/README


     

    開發人員常用命令

     

    (1) 導入項目

    $ cd ~/project
    $ mkdir -p svntest/{trunk,branches,tags}
    $ svn import svntest https://localhost/test/svntest --message "Start project"
    ...
    $ rm -rf svntest

    我們新建一個項目svntest,在該項目下新建三個子目錄:trunk,開發主干;branches,開發分支;tags,開發階段性標簽。然后導入到版本庫test下,然后把svntest拿掉。

    (2) 導出項目

    $ svn checkout https://localhost/test/svntest/trunk

    修訂版本號的指定方式是每個開發人員必須了解的,以下是幾個參考例子,說明可參考svn推薦書。

    $ svn diff --revision PREV:COMMITTED foo.c
    # shows the last change committed to foo.c

    $ svn log --revision HEAD
    # shows log message for the latest repository commit

    $ svn diff --revision HEAD
    # compares your working file (with local changes) to the latest version
    # in the repository

    $ svn diff --revision BASE:HEAD foo.c
    # compares your “pristine” foo.c (no local changes) with the
    # latest version in the repository

    $ svn log --revision BASE:HEAD
    # shows all commit logs since you last updated

    $ svn update --revision PREV foo.c
    # rewinds the last change on foo.c
    # (foo.c's working revision is decreased)

    $ svn checkout --revision 3
    # specified with revision number

    $ svn checkout --revision {2002-02-17}
    $ svn checkout --revision {15:30}
    $ svn checkout --revision {15:30:00.200000}
    $ svn checkout --revision {"2002-02-17 15:30"}
    $ svn checkout --revision {"2002-02-17 15:30 +0230"}
    $ svn checkout --revision {2002-02-17T15:30}
    $ svn checkout --revision {2002-02-17T15:30Z}
    $ svn checkout --revision {2002-02-17T15:30-04:00}
    $ svn checkout --revision {20020217T1530}
    $ svn checkout --revision {20020217T1530Z}
    $ svn checkout --revision {20020217T1530-0500}

    (3) 日常指令

    $ svn update

    $ svn add foo.file
    $ svn add foo1.dir
    $ svn add foo2.dir --non-recursive
    $ svn delete README
    $ svn copy foo bar
    $ svn move foo1 bar1

    $ svn status
    $ svn status --verbose
    $ svn status --verbose --show-updates
    $ svn status stuff/fox.c

    $ svn diff
    $ svn diff > patchfile

    $ svn revert README
    $ svn revert

    修改沖突發生時,會生成三個文件:.mine, .rOLDREV, .rNEWREV。比如:

    $ ls -l
    sandwich.txt
    sandwich.txt.mine
    sandwich.txt.r1
    sandwich.txt.r2

    解決修改沖突方式之一:修改沖突的文件sandwich.txt,然后運行命令:

    $ svn resolved sandwich.txt

    方式之二:用庫里的新版本覆蓋你的修改:

    $ cp sandwich.txt.r2 sandwich.txt
    $ svn resolved sandwich.txt

    方式之三:撤銷你的修改,這種方式不需要運行resolved子命令:

    $ svn revert sandwich.txt
    Reverted 'sandwich.txt'
    $ ls sandwich.*
    sandwich.txt

    確保沒問題后,就可以提交了。

    $ svn commit --message "Correct some fatal problems"
    $ svn commit --file logmsg
    $ svn commit

    (4) 檢驗版本歷史

    $ svn log
    $ svn log --revision 5:19
    $ svn log foo.c
    $ svn log -r 8 -v

    $ svn diff
    $ svn diff --revision 3 rules.txt
    $ svn diff --revision 2:3 rules.txt
    $ svn diff --revision 4:5 http://svn.red-bean.com/repos/example/trunk/text/rules.txt

    $ svn cat --revision 2 rules.txt
    $ svn cat --revision 2 rules.txt > rules.txt.v2

    $ svn list http://svn.collab.net/repos/svn
    $ svn list --verbose http://svn.collab.net/repos/svn

    $ svn checkout --revision 1729 # Checks out a new working copy at r1729

    $ svn update --revision 1729 # Updates an existing working copy to r1729

    (5) 其他有用的命令

    svn cleanup

    為失敗的事務清場。

    (6) 分支和合并

    建立分支方法一:先checkout然后做拷貝,最后提交拷貝。

    $ svn checkout http://svn.example.com/repos/calc bigwc
    A bigwc/trunk/
    A bigwc/trunk/Makefile
    A bigwc/trunk/integer.c
    A bigwc/trunk/button.c
    A bigwc/branches/
    Checked out revision 340.

    $ cd bigwc
    $ svn copy trunk branches/my-calc-branch
    $ svn status
    A + branches/my-calc-branch

    $ svn commit -m "Creating a private branch of /calc/trunk."
    Adding branches/my-calc-branch
    Committed revision 341.

    建立分支方法二:直接遠程拷貝。

    $ svn copy http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/branches/my-calc-branch \
    -m "Creating a private branch of /calc/trunk."

    Committed revision 341.

    建立分支后,你可以把分支checkout并繼續你的開發。

    $ svn checkout http://svn.example.com/repos/calc/branches/my-calc-branch

    假設你已經checkout了主干,現在想切換到某個分支開發,可做如下的操作:

    $ cd calc
    $ svn info | grep URL
    URL: http://svn.example.com/repos/calc/trunk
    $ svn switch http://svn.example.com/repos/calc/branches/my-calc-branch
    U integer.c
    U button.c
    U Makefile
    Updated to revision 341.
    $ svn info | grep URL
    URL: http://svn.example.com/repos/calc/branches/my-calc-branch

    合并文件的命令參考:

    $ svn diff -r 343:344 http://svn.example.com/repos/calc/trunk
    $ svn merge -r 343:344 http://svn.example.com/repos/calc/trunk
    $ svn commit -m "integer.c: ported r344 (spelling fixes) from trunk."
    $ svn merge -r 343:344 http://svn.example.com/repos/calc/trunk my-calc-branch
    $ svn merge http://svn.example.com/repos/branch1@150 \
    http://svn.example.com/repos/branch2@212 \
    my-working-copy
    $ svn merge -r 100:200 http://svn.example.com/repos/trunk my-working-copy
    $ svn merge -r 100:200 http://svn.example.com/repos/trunk
    $ svn merge --dry-run -r 343:344 http://svn.example.com/repos/calc/trunk

    最后一條命令僅僅做合并測試,并不執行合并操作。

    建立標簽和建立分支沒什么區別,不過是拷貝到不同的目錄而已。

    $ svn copy http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/tags/release-1.0 \
    -m "Tagging the 1.0 release of the 'calc' project."

    $ ls
    my-working-copy/
    $ svn copy my-working-copy http://svn.example.com/repos/calc/tags/mytag
    Committed revision 352.

    后一種方式直接把本地的工作拷貝復制為標簽。

    此外,你還可以刪除某個分支。

    $ svn delete http://svn.example.com/repos/calc/branches/my-calc-branch \
    -m "Removing obsolete branch of calc project."

    管理人員常用命令

    (7) 版本庫管理

    $ svnadmin help
    ...
    $ svnadmin help create
    ...
    $ svnadmin create --fs-type bdb /usr/local/repository/svn/test
    $ chown -R svn.svn /usr/local/repository/svn/test

    建立版本庫,庫類型為bdb(使用Berkeley DB做倉庫),庫名稱為test。
    svn版本庫有兩種存儲方式:基于Berkeley DB(bdb)或者基于文件系統(fsfs),通過 --fs-type可指定存儲方式。

    (8) 查詢版本庫信息

    $ svnlook help
    ...
    $ svnlook help tree
    ...
    $ svnlook tree /usr/local/repository/svn/test --show-ids

    posted on 2012-01-15 20:23 w@ns0ng 閱讀(1673) 評論(0)  編輯  收藏 所屬分類: Linux

    主站蜘蛛池模板: 91久久青青草原线免费| 9久久免费国产精品特黄| 日本免费网址大全在线观看| 亚洲国产精品国自产拍电影| 99xxoo视频在线永久免费观看| 亚洲成年人在线观看| 免费人成在线观看网站品爱网| 亚洲国产人成网站在线电影动漫| GOGOGO高清免费看韩国| 亚洲精品国产精品乱码在线观看| 青青操免费在线视频| 亚洲国产精品久久久久| 中文毛片无遮挡高潮免费| 亚洲人配人种jizz| 在线免费观看a级片| 国产精品亚洲一区二区三区久久| 夜色阁亚洲一区二区三区| 中文字幕在线免费视频| 亚洲av无码不卡一区二区三区| 中文字幕在线免费观看| 亚洲熟女综合一区二区三区| 国产精品无码一二区免费| 一级一级毛片免费播放| 久久亚洲精品国产精品黑人| 免费下载成人电影| 深夜特黄a级毛片免费播放| 亚洲午夜国产精品无码| 99re在线视频免费观看| 亚洲欧美日韩自偷自拍| 亚洲第一黄片大全| 久久久久成人精品免费播放动漫| 亚洲乱人伦精品图片| 亚洲成a人一区二区三区| 亚洲一区二区在线免费观看| 亚洲精品第一国产综合亚AV| 亚洲五月午夜免费在线视频| 最刺激黄a大片免费网站| 精品一区二区三区无码免费直播 | 99国产精品免费视频观看| 亚洲人成网国产最新在线| 亚洲中文久久精品无码ww16|