1. 程式人生 > >版本管理之SVN實踐教程:基礎篇(6):tag的查詢/建立/刪除/設定

版本管理之SVN實踐教程:基礎篇(6):tag的查詢/建立/刪除/設定

這裡寫圖片描述

這篇文章介紹一下在svn中tag操作的查詢/建立/刪除與設定。

查詢tag

因為因為tags目錄是apache建議的方式,其本質也就是一個目錄,所以查詢的方式可以結合svn list命令確認改目錄下的檔案資訊,以及svn log確認提交資訊來進行。

[root@platform demo-repo]# svn list tags
release-script-1.0/
release-script-1.1/
[root@platform demo-repo]#

可以看到tags下有兩次release打的tag:release-script-1.0/和release-script-1.1。當然也可以使用全路徑的URL來確認:

[root@platform demo-repo]# svn ls svn://192.168.163.129:3690/demo-repo/tags/
release-script-1.0/
release-script-1.1/
[root@platform demo-repo]# 
[root@platform demo-repo]# svn ls svn://192.168.163.129:3690/demo-repo/tags/release-script-1.1/
feature_script.sh
trunk-file
[root@platform demo-repo]#

使用svn log查詢tag相關的日誌資訊

[[email protected] tags]# svn log
------------------------------------------------------------------------
r8 | devuser1 | 2018-08-26 14:15:41 -0400 (Sun, 26 Aug 2018) | 1 line

release for feature_script
------------------------------------------------------------------------
r6 | devuser1 | 2018-08-26 14:07:55 -0400 (Sun, 26 Aug 2018) | 1 line

release for feature_script
------------------------------------------------------------------------
r2 | devuser1 | 2018-08-26 13:39:18 -0400 (Sun, 26 Aug 2018) | 1 line branches init ------------------------------------------------------------------------ [[email protected] tags]#

也可以使用-v選項獲取更為詳細的修改資訊

[[email protected] tags]# svn log -v
------------------------------------------------------------------------
r8 | devuser1 | 2018-08-26 14:15:41 -0400 (Sun, 26 Aug 2018) | 1 line
Changed paths:
   A /tags/release-script-1.1 (from /trunk:7)

release for feature_script
------------------------------------------------------------------------
r6 | devuser1 | 2018-08-26 14:07:55 -0400 (Sun, 26 Aug 2018) | 1 line
Changed paths:
   A /tags/release-script-1.0 (from /trunk:5)

release for feature_script
------------------------------------------------------------------------
r2 | devuser1 | 2018-08-26 13:39:18 -0400 (Sun, 26 Aug 2018) | 1 line
Changed paths:
   A /branches
   A /tags
   A /trunk

branches init
------------------------------------------------------------------------
[[email protected] tags]#

建立

刪除

因為在刪除操作時會自動生成可修改的commit日誌資訊,所以需要設定SVN_EDITOR,這裡設定為vi,也可以設定你熟悉的其他編輯器。

[root@platform tags]# export SVN_EDITOR=vi

使用svn rm進行刪除操作

[root@platform tags]# svn rm svn://192.168.163.129:3690/demo-repo/tags/release-script-1.0

此時會提示如下資訊,如果需要修改,修改後儲存退出編輯器



--This line, and those below, will be ignored--

D    svn://192.168.163.129/demo-repo/release-script-1.0

選擇繼續,則刪除完成

[root@platform tags]# svn rm svn://192.168.163.129:3690/demo-repo/tags/release-script-1.0

Log message unchanged or not specified
(a)bort, (c)ontinue, (e)dit:
c

Committed revision 13.
[root@platform tags]# 

刪除後狀態確認

使用update命令,會更新working copy的狀態

[root@platform tags]# ls
release-script-1.0  release-script-1.1
[root@platform tags]# svn update
Updating '.':
D    release-script-1.0
Updated to revision 13.
[root@platform tags]# ls
release-script-1.1
[root@platform tags]#

svn的刪除日誌資訊日誌資訊(可以看到沒有刪除的日誌資訊,只有附加資訊)

[[email protected] tags]# svn log -v
------------------------------------------------------------------------
r13 | devuser2 | 2018-08-26 15:45:21 -0400 (Sun, 26 Aug 2018) | 1 line
Changed paths:
   D /tags/release-script-1.0


------------------------------------------------------------------------
r8 | devuser1 | 2018-08-26 14:15:41 -0400 (Sun, 26 Aug 2018) | 1 line
Changed paths:
   A /tags/release-script-1.1 (from /trunk:7)

release for feature_script
------------------------------------------------------------------------
r6 | devuser1 | 2018-08-26 14:07:55 -0400 (Sun, 26 Aug 2018) | 1 line
Changed paths:
   A /tags/release-script-1.0 (from /trunk:5)

release for feature_script
------------------------------------------------------------------------
r2 | devuser1 | 2018-08-26 13:39:18 -0400 (Sun, 26 Aug 2018) | 1 line
Changed paths:
   A /branches
   A /tags
   A /trunk

branches init
------------------------------------------------------------------------
[[email protected] tags]# 

設定

因為tags是release操作相關,所以一般專案中都會對其進行只讀設定。結合前面的基礎知識,這裡我們來對tags的訪問許可權進行設定。

authz

在authz中新增如下設定,即可禁止目前的的開發使用者和測試使用者都對tags下是隻讀許可權。

[demo-repo:/tags]                                                                           
@group_dev = r                          
testuser1  = r 

但是這會導致一個問題,建立tag也會沒有許可權。

[root@platform tags]# svn copy svn://192.168.163.129:3690/demo-repo/trunk svn://192.168.163.129:3690/demo-repo/tags/release-script-1.2 -m "release for feature_script 1.2"
svn: E220004: Access denied
[root@platform tags]# 

所以此時可以考慮將建立tag操作的許可權專門管理,再建立相關對此目錄有寫許可權的使用者或組進行管理即可,詳細設定方法可以參看前面的文章。
另外還有將tags目錄設為只讀的方式,這種方式很多時候因為企業內部的流程審計需要,比如需要將所有的釋出操作的日誌進行audit,這種流程之下,tags下根本是不允許進行刪除的。
而專案中使用的最多的方式則是使用hook的方式,在pre-commit的階段判斷出來,如果發現此使用者試圖在tags下進行修改,則禁止,或者使用相關的模版直接設定相關許可權即可,詳細的方式在後續的hook使用中繼續進行介紹。

相關推薦

版本管理SVN實踐教程基礎6tag查詢/建立/刪除/設定

這篇文章介紹一下在svn中tag操作的查詢/建立/刪除與設定。 查詢tag 因為因為tags目錄是apache建議的方式,其本質也就是一個目錄,所以查詢的方式可以結合svn list命令確認改目錄下的檔案資訊,以及svn log確認提交資訊來進行。

版本管理gitlab實踐教程 進階 1

實踐gitflow 結合git flow,使用gitlab作為遠端倉庫管理,在實際的專案中是一種可行的方式,而且這種方式對與複雜大型的專案有較好的適應方式。 git flow git flow源於Vincent Driessen在2010年提出的一個分支模型: 主要特點 兩個長期

版本管理gitlab實踐教程基礎(1)

這幾篇文章主要面向對git和gitlab稍有基礎,但是又不太會用的使用者,通過這幾文章你可以學到如下gitlab的使用方法: sshkey的設定 建立專案 分支操作 使用者/許可權/組的操作 配置專案可見性 Merge Request Issues操作

版本管理gitlab實踐教程基礎(16)

這篇文章介紹一下如何修改初始管理賬號root的密碼。 命令列方式 確認gitlab-rails 使用gitlab-rails進行設定 which gitlab-rails /opt/gitlab/bin/gitlab-rails # #

版本管理gitlab實踐教程基礎(14)

這篇文章整理一下對gitlab/github進行clone或者push操作時,不需要每次提交都輸入使用者名稱/密碼的幾種方式。 場景 何時需要輸入使用者名稱/密碼 gitlab可以建立private/protected/public的倉庫,priv

版本管理gitlab實踐教程 基礎 1

這幾篇文章主要面向對git和gitlab稍有基礎,但是又不太會用的使用者,通過這幾文章你可以學到如下gitlab的使用方法: sshkey的設定 建立專案 分支操作 使用者/許可權/組的操作 配置專案可見性 Merge Re

版本管理gitlab實踐教程進階(1)

實踐gitflow 結合git flow,使用gitlab作為遠端倉庫管理,在實際的專案中是一種可行的方式,而且這種方式對與複雜大型的專案有較好的適應方式。 git flow git flow源於Vincent Driessen在2010年提出的一個分

版本管理gitlab實踐教程 基礎 3

symbol 為什麽 reg details pro == 什麽 操作 requests comment是版本管理中非常重要的內容,尤其是在經年累月的大型項目中,鐵打的項目,流水的SE,哪怕只言片語的留下,對後來者問題的對應很多時候都能起到重要作用,這篇文章用來講解

linux基礎程序管理

程序 程序的定義:程序就是cpu未完成的工作 ps命令 ps a ##關於當前環境的所有程序 x| -A ##所有程序 f ##顯示程序從屬關係 e ##顯示程序呼叫環境工具的詳細資訊 l ##長列表顯示程序的

nodejselasticsearch使用基礎

nodejs之elasticsearch使用:基礎篇(一) 前言 程式碼 前言 本節只是嘗試使用nodejs中的elasticsearch模組實現elasticsearch在node環境下的基本增刪改查。 具體方法詳情

linux基礎基於Redhat7系統的特殊許可權與acl許可權列表

新建目錄和檔案的預設許可權 新建目錄和檔案的預設許可權是由系統中umask值來決定的。 新建FILE許可權:666-umask (對位相減)    由數字法賦許可權的過程中,我們能夠發現,凡是奇數許可權,總是包含執行許可權的。而一個檔案如果預設就包含執行許可權其實是非常危險的。因此如果所

linux基礎基於Redhat7系統的系統日誌與延時任務

系統日誌 配置檔案: /etc/rsyslog.conf 系統日誌是記錄系統中硬體、軟體和系統問題的資訊,同時還可以監視系統中發生的事件。使用者可以通過它來檢查錯誤發生的原因,或者尋找受到攻擊時攻擊者留下的痕跡。 常用日誌型別與日誌級別 型別 auth

linux基礎基於Redhat7系統的網路設定

常用網路協議 ipv4 IPv4,是網際網路協議(Internet Protocol,IP)的第四版,也是第一個被廣泛使用,構成現今 網際網路技術的基礎的協議。1981年 Jon Postel 在RFC791中定義了IP,Ipv4可以執行在各種 各樣的底層網路上,比如端

linux基礎檔案歸檔與不同系統間的檔案傳輸

檔案歸檔 檔案歸檔,就是把多個檔案變成一個歸檔檔案,即將多個檔案打包起來 tar命令 Unix和類Unix系統上的壓縮打包工具,可以將多個檔案合併為一個檔案,打包後的檔名亦為“tar”。tar檔案格式已經成為POSIX標準,最初是POSIX.1-1988,當前是POSIX.1-2

linux基礎基於Redhat7系統的sshd服務

SSHD 服務簡介 ssh 協議:安全外殼協議。為 Secureshell 的縮寫。SSH 為建立在應用層和傳輸層基礎上的安全協議。 sshd 服務使用 SSH 協議可以用來進行遠端控制, 或在計算機之間傳送檔案。而實現此功能的傳統方式,如 telnet(終端模擬協議)都是極為不安全的,

linux基礎Redhat7系統中使用指令碼安裝虛擬機器

安裝虛擬機器 要安裝一個虛擬機器,我們需要開啟virt-manager然後一步一步的去設定才能到達安裝頁面,但是有沒有更好的辦法能夠只需要一部到達安裝虛擬機器的頁面呢,下面就給大家展示用指令碼直接到達安裝一個虛擬機器的頁面 安裝虛擬機器我們當然要在真機中操作,每一步都一定要仔細檢查

linux基礎基於Redhat7系統中的DHCP服務的設定

什麼是DHCP? DHCP,動態主機配置協議,前身是BOOTP協議,是一個區域網的網路協議,使用UDP協議工作,常用的2個埠:67(DHCP server),68(DHCP client)。DHCP通常被用於區域網環境,主要作用是集中的管理、分配IP地址,使client動態的獲得IP地址

linux基礎基於Redhat7系統中的定時任務

定時任務CRONTAB概念/介紹 crontab命令用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於“crontab”檔案中,以供之後讀取和執行。 cron 系統排程程序。 可以使用它在每天的非高峰負荷時間段執行作業,或在一週或一月中的不同時段執行。cron是系統主

Unity Editor 基礎自定義 Inspector 面板

自定義Inspector屬性面板 EditorGUILayout 編輯器介面佈局  這是一個編輯器類,如果想使用它你需要把它放到工程目錄下的Assets/Editor資料夾下。編輯器類在UnityEditor名稱空間下。所以當使用C#指令碼時,你需要在指令碼前面加上

Unity Editor 基礎自定義視窗案例二

本文為本人學習上鍊接的筆記微有改動,請點選以上鍊接檢視原文,尊重樓主智慧財產權。 ----------------------------------------------------------------------------------------------