日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

「SVN」Ubuntu 版本库搭建+使用 完整教程

發(fā)布時間:2024/9/27 Ubuntu 122 豆豆
生活随笔 收集整理的這篇文章主要介紹了 「SVN」Ubuntu 版本库搭建+使用 完整教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

重新寫一篇,發(fā)現(xiàn)svn有了中文版教程,一下興致就上頭。正好新項目要搭建svn環(huán)境,開一篇復(fù)習(xí)復(fù)習(xí)。發(fā)誓一定寫完整!


真正開始搭建才發(fā)現(xiàn)上面鏈接里的教程并沒什么用,因為需要搭建版本庫使用的系統(tǒng)是ubuntu,而上面的教程是基于windows系統(tǒng)

環(huán)境與依賴

系統(tǒng):Ubuntu 18.04

使用HTTP協(xié)議訪問SVN存儲庫需要安裝:Apache 2

使用HTTPS協(xié)議訪問SVN存儲庫需要安裝:Apache 2 + OpenSSL

SVN簡介

不同于GitHub,SVN版本控制使用集中式的管理方法,需要一臺主機作為中心服務(wù)器。因此一般會使用服務(wù)器作為中心主機,在中心主機上搭建版本庫,其他主機從中心主機上拉取代碼,修改,并上傳修改后的代碼到中心主機。

SVN安裝

sudo apt install subversion

svn版本庫用戶命令簡要

svn命令由svn+子命令+選項+參數(shù)構(gòu)成,大部分子命令都會以文件或者文件夾作為參數(shù),并且對文件夾中的文件遞歸執(zhí)行命令。因此如果子命令中沒有提供參數(shù),svn默認在當(dāng)前目錄(包括當(dāng)前目錄)遞歸執(zhí)行命令

下面的內(nèi)容只是非常簡要地指出了命令的大概操作,具體使用細節(jié)請直接svn 命令 --help查看。

svn --help:查看幫助

svn checkout:從版本庫中導(dǎo)出工作副本

svn update/up:將版本庫的修改合并到工作副本中,一般是在commit前先update一下

svn add PATH:添加文件/文件夾到版本控制,此時未上傳至服務(wù)器

svn commit [PATH]:提交添加的文件/文件夾到服務(wù)器,服務(wù)器會生成一個更新的代碼版本

svn export:導(dǎo)出一個無版本控制的文件副本,需要指定導(dǎo)出版本

svn import:將未納入版本控制的文件提交到版本

svn list/ls:列出版本庫中的目錄內(nèi)容

svn cleanup [PATH]:遞歸清理工作副本,移除寫鎖,恢復(fù)未完成的操作等

svn copy/cp:從倉庫或當(dāng)前工作文檔中拷貝文件或目錄

svn delete/del/remove/rm:從版本庫中刪除文件和目錄

svn diff:顯示兩個修改或路徑之間的本地更改或差異

svn info:顯示有關(guān)本地或遠程項目的信息

svn lock:鎖定版本庫中的路徑,使得其他用戶不能向其提交修改

svn unlock:解除工作副本或URL的鎖定

svn merge:合并多個修改到一個工作副本中

svn mkdir:創(chuàng)建納入版本控制的新目錄

svn move/mv/rename/ren:移動/重命名工作副本或倉庫中的項目

svn upgrade:升級工作副本的元數(shù)據(jù)存儲格式

svn status:顯示本地修改的文件列表

svn auth

svn log

svn mergeinfo

svn patch

svn propdel

svn propedit

svn propget

svn proplist

svn propset

svn relocate

svn resolve

svn resolved

svn revert

svn switch

svn blame/praise/annotate/ann

svn changelist

svn cat

svn版本庫管理者命令簡要

版本庫管理者使用命令是svnadmin 子命令 路徑 參數(shù),與svn使用者的命令不同,注意區(qū)分

svnadmin crashtest:在 REPOS_PATH 打開存儲庫,然后中止,從而模擬在持有打開的存儲庫句柄時崩潰的進程

svnadmin create:創(chuàng)建一個新的,空的倉庫

svnadmin dump:將文件系統(tǒng)的內(nèi)容以“dumpfile”可移植格式轉(zhuǎn)儲到標(biāo)準(zhǔn)輸出,向標(biāo)準(zhǔn)錯誤發(fā)送反饋

svnadmin hotcopy:熱拷貝(?hot copy)一個倉庫

svnadmin info:打印倉庫信息

svnadmin load:加載dump后的文件,并作為一個新的修訂到文件系統(tǒng)中。如果倉庫之前是空的,那么UUID將會默認改成文件中的第一個;如果指定了 --revision,則將加載的修訂限制為僅轉(zhuǎn)儲流中修訂號與指定范圍匹配的修訂

svnadmin lock:通過 USERNAME 設(shè)置 COMMENT-FILE 中的注釋來鎖定 PATH

svnadmin lslocks:打印所有鎖的描述

svnadmin lstxns:打印所有未提交事務(wù)的名稱

svnadmin pack:將版本庫壓縮為更搞笑的存儲模型

svnadmin recover:在存儲庫上運行恢復(fù)過程

svnadmin rmlocks:無條件移除已鎖倉庫上的鎖

svnadmin rmtxns:刪除事務(wù)

svnadmin setuuid:重設(shè)倉庫的UUID

svnadmin unlock:在驗證與鎖關(guān)聯(lián)的令牌與 TOKEN 匹配后,解鎖鎖

svnadmin upgrade:將存儲庫升級到支持的最新架構(gòu)的版本

svnadmin verify:確認倉庫中存儲的數(shù)據(jù)

svnadmin setrevprop

svnadmin setlogs

svnadmin list-unused-dblogs

svnadmin list-dblogs

svnadmin freeze

svnadmin deltify

svnadmin delrevprop

搭建版本庫

創(chuàng)建svn用戶組

  • 查看當(dāng)前組:sudo cat /etc/group
  • 創(chuàng)建svn組:sudo groupadd -g 666 svn,其中666是可以任意設(shè)置,不重復(fù)就好
  • 查看組內(nèi)成員:members svn
  • 查詢當(dāng)前用戶:whoami
  • 查詢所有用戶信息:cat /etc/passwd,shadow是密碼文件;以冒號分割;從左到右含義分別是:用戶名:密碼占位符(x 表示用戶需要密碼登錄):用戶標(biāo)識號(UID):組標(biāo)識號(GID):注釋性描述:主目錄:登錄的 shell
  • 添加當(dāng)前戶到組:sudo gpasswd -a sysadmin svn
  • 添加www-data用戶到組:sudo gpasswd -a www-data svn
  • 創(chuàng)建svn項目文件夾

    一般會在/srv/svn、/usr/local/svn、/home/svn等地方創(chuàng)建svn文件,然后在svn文件夾內(nèi)創(chuàng)建項目文件夾,不同項目建立不同的文件夾,但均放在svn文件夾下;在這里創(chuàng)建的svn文件夾,里面包含的各個項目的文件夾并沒有存儲代碼文件,而是存儲的存儲了歷史版本代碼的封裝文件

    如果問,如何在服務(wù)器上修改和編輯實體代碼,并上傳到版本庫,那么你可以在服務(wù)器任何一個你想存放代碼的位置,使用svn從版本庫中拉取代碼即可,即在服務(wù)器上拉取服務(wù)器存儲的代碼

    創(chuàng)建svn倉庫

    sudo svnadmin create 項目文件夾絕對路徑

    執(zhí)行該命令后項目文件夾會有一些svn自帶的文件和文件夾,

    更正文件夾限權(quán)

    sudo chown -R www-data:svn 項目文件夾
    sudo chmod -R g+rws 項目文件夾

    添加原始代碼

    在做完上面的工作后,版本控制庫已經(jīng)建立完畢

    如果想在服務(wù)器做到像遠程主機那樣修改、提交代碼,或者想添加一份原始代碼到服務(wù)器,那么服務(wù)器和遠程主機均可以,只是服務(wù)器拉取版本庫代碼跟遠程拉取的命令不同

    一個在服務(wù)器本地提交代碼的例子

    • 假設(shè)
      假設(shè)服務(wù)器上的版本庫中沒有代碼

    • 流程

    • 在一個你期望存放代碼的地方打開終端
    • 使用本地拉取命令:sudo checkout file:///absolute/path/of/your/project/in/svn/folder,此時從svn文件夾下拷貝了一個工作副本
    • 將代碼復(fù)制粘貼進2生成的文件夾
    • 執(zhí)行svn add *添加文件
    • 執(zhí)行svn commit -m "first time add code, this is version 1",即可在服務(wù)器上將代碼提交到服務(wù)器的版本庫

    一個在遠程主機提交代碼的例子

    • 假設(shè)
      假設(shè)服務(wù)器上的版本庫中沒有代碼

    • 流程

    • 在一個你期望存放代碼的地方打開終端
    • 使用遠程訪問命令:svn checkout svn+ssh://username@hostname/absolute/path/of/your/project/in/svn/folder,此時從svn文件夾下拷貝了一個工作副本
    • 將代碼復(fù)制粘貼進2生成的文件夾
    • 執(zhí)行svn add *添加文件
    • 執(zhí)行svn commit -m "first time add code, this is version 1",即可在遠程主機上將代碼提交到服務(wù)器的版本庫

    訪問方法

    上面是在存放版本庫的服務(wù)器搭建倉庫,下面是其他主機訪問服務(wù)器的方法。訪問方法一共有五種:

    • 本地訪問:一般是在服務(wù)器上自身訪問自己
    • http訪問
    • https訪問
    • svn訪問
    • svn+ssh訪問

    在這里只講svn+ssh的訪問方法,其他方法的細節(jié)見參考鏈接的第一條。

    本機直接訪問

    該方法只用于訪問來自同一臺機器(服務(wù)器自己訪問自己)的svn,在版本庫搭建好后,在期望存放代碼的地方直接打開終端,使用下面的命令,即可拉取代碼:

    svn checkout file:///absolute/path/to/your/project
    svn checkout file://localhost/absolute/path/to/your/project

    上面兩個命令的區(qū)別在于file冒號后的斜杠(/)數(shù)量,使用///就不需要再加上主機名,使用//則需要加上主機名

    svn+ssh訪問

    使用該方法的前提是能夠在終端中使用ssh遠程登錄服務(wù)器。如果滿足上面的條件,則

  • 先在本地主機中新建一個存放項目副本的文件夾
  • svn checkout svn+ssh://username@hostname/absolute/path/to/your/project projectName
  • 即可拉取遠程服務(wù)器上的文件/文件夾到本機,后續(xù)修改后,直接add+commit提交到遠程服務(wù)器即可

    參考鏈接

    SVN on Linux
    HTTP和HTTPS的區(qū)別

    總結(jié)

    以上是生活随笔為你收集整理的「SVN」Ubuntu 版本库搭建+使用 完整教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。