關於SVNcommit時強制寫注釋方法

來源:互聯網
上載者:User

標籤:blog   http   os   io   檔案   for   ar   問題   

一、摘要

情境:

    在這次開發項目過程中,團隊中總是有人忘記添加註釋。

問題:

    1:其他成員不知道你提交是什麼代碼, 給復原操作帶來很多不必要的麻煩。

    2:這個工作需要有一個人天天提醒大家在提交代碼的時候加入注釋。

    3:這個是重複的,定時的,固定的 工作。

思路:

    1:我們可以把這項工作交給電腦來完成豈不是更好。

    2:提交代碼的時候電腦自動提醒。

    3:代碼注釋字數限制。以下為最少5個字為例子。

 

二、本文大綱

       a、摘要。

       b、本文大綱。

       c、第一步建立SVN版本庫。

       d、第二步 pre-commit.tmpl 修改前代碼:。

       e、第三步 pre-commit.bat 修改後代碼:(Windows)。

       f、第二個方法,直接在客服端設定。

       j、第四步 。

三、第一步建立SVN版本庫

在 SVNDataBase檔案夾上建立版本庫SVNDataBase檔案夾必須是空的這個SVN會提示的。

在hooks檔案夾下找到

使用者提交代碼的動作,對應的是pre-commit。因此,可以修改pre-commit.tmpl檔案。 
文 件名修改為pre-commit, Windows下可以修改為pre-commit.bat。這樣可以讓系統知道該檔案時可執行檔。

四、第二步 pre-commit.tmpl 修改前代碼

 

#!/bin/sh

# PRE-COMMIT HOOK

#

# The pre-commit hook is invoked before a Subversion txn is

# committed.  Subversion runs this hook by invoking a program

# (script, executable, binary, etc.) named ‘pre-commit‘ (for which

# this file is a template), with the following ordered arguments:

#

#   [1] REPOS-PATH   (the path to this repository)

#   [2] TXN-NAME     (the name of the txn about to be committed)

#

#   [STDIN] LOCK-TOKENS ** the lock tokens are passed via STDIN.

#

#   If STDIN contains the line "LOCK-TOKENS:\n" (the "\n" denotes a

#   single newline), the lines following it are the lock tokens for

#   this commit.  The end of the list is marked by a line containing

#   only a newline character.

#

#   Each lock token line consists of a URI-escaped path, followed

#   by the separator character ‘|‘, followed by the lock token string,

#   followed by a newline.

#

# The default working directory for the invocation is undefined, so

# the program should set one explicitly if it cares.

#

# If the hook program exits with success, the txn is committed; but

# if it exits with failure (non-zero), the txn is aborted, no commit

# takes place, and STDERR is returned to the client.   The hook

# program can use the ‘svnlook‘ utility to help it examine the txn.

#

# On a Unix system, the normal procedure is to have ‘pre-commit‘

# invoke other programs to do the real work, though it may do the

# work itself too.

#

#   ***  NOTE: THE HOOK PROGRAM MUST NOT MODIFY THE TXN, EXCEPT  ***

#   ***  FOR REVISION PROPERTIES (like svn:log or svn:author).   ***

#

#   This is why we recommend using the read-only ‘svnlook‘ utility.

#   In the future, Subversion may enforce the rule that pre-commit

#   hooks should not modify the versioned data in txns, or else come

#   up with a mechanism to make it safe to do so (by informing the

#   committing client of the changes).  However, right now neither

#   mechanism is implemented, so hook writers just have to be careful.

#

# Note that ‘pre-commit‘ must be executable by the user(s) who will

# invoke it (typically the user httpd runs as), and that user must

# have filesystem-level permission to access the repository.

#

# On a Windows system, you should name the hook program

# ‘pre-commit.bat‘ or ‘pre-commit.exe‘,

# but the basic idea is the same.

#

# The hook program typically does not inherit the environment of

# its parent process.  For example, a common problem is for the

# PATH environment variable to not be set to its usual value, so

# that subprograms fail to launch unless invoked via absolute path.

# If you‘re having unexpected problems with a hook program, the

# culprit may be unusual (or missing) environment variables.

#

# Here is an example hook script, for a Unix /bin/sh interpreter.

# For more examples and pre-written hooks, see those in

# the Subversion repository at

# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and

# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/

 

REPOS="$1"

TXN="$2"

# Make sure that the log message contains some text.

SVNLOOK=/usr/local/bin/svnlook

SVNLOOKlog−t"TXN" "$REPOS" | \

   grep "[a-zA-Z0-9]" > /dev/null || exit 1

# Check that the author of this commit has the rights to perform

# the commit on the files and directories being modified.

commit-access-control.pl "REPOS""TXN" commit-access-control.cfg || exit 1

# All checks passed, so allow the commit.

exit 0

 

五、第三步 pre-commit.bat 修改後代碼 ( Windows )

把pre-commit檔案的內容清楚複製下面的代碼到pre-commit檔案中:

 

@echo off

setlocal

set REPOS=%1

set TXN=%2

rem check that logmessage contains at least 10 characters

rem .....代表5個字元

svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul

if %errorlevel% gtr 0 goto err

exit 0

:err

echo Empty log message not allowed. Commit aborted! 1>&2

exit 1

 

如下:

給pre-commit添加可執行許可權:  
chmod +x pre-commit

 

六、第二個方法,直接在客服端設定

 

   通過TortoiseSvn,在本機複本中,選擇項目,右鍵選擇TortoiseSvn,選擇屬性,添加tsvn:logminsize,將值限定為10,添加了logminsize屬性後,要將本地工作複本commit一下,才會生效。如:

 

七、第五步

 

小於5個字元 提示如下:

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.