How can I prevent Subversion commits without comments?

后端 未结 6 1276
眼角桃花
眼角桃花 2020-12-04 14:08

Does anybody know how to prevent commits to a Subversion code repository when there is no commit comment entered?

相关标签:
6条回答
  • 2020-12-04 14:38

    Here is a pre-commit hook with @miku's detailed error message for Linux:

    #!/bin/sh
    
    REPOS="$1"
    TXN="$2"
    
    SVNLOOK=/usr/bin/svnlook
    $SVNLOOK log -t "$TXN" "$REPOS" | \
       grep "[a-zA-Z0-9]" > /dev/null
    
    GREP_STATUS=$?
    if [ $GREP_STATUS -ne 0 ]
    then
        echo "Your commit has been blocked because you didn't give any log message" 1>&2
        echo "Please write a log message describing the purpose of your changes and" 1>&2
        echo "then try committing again. -- Thank you" 1>&2
        exit 1
    fi
    exit 0
    
    0 讨论(0)
  • 2020-12-04 14:39

    Linux script for more than 15 characters--

    #!/bin/bash
    REPOS="$1"
    TXN="$2"
    # Make sure that the log message contains some text.
    SVNLOOK=/usr/bin/svnlook
    # Comments should have more than 5 characters
    LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep [a-zA-Z0-9] | wc -c)
    if [ "$LOGMSG" -lt 15 ];
    then
    echo -e "Please provide a meaningful comment when committing changes." 1>&2
    exit 1
    fi
    

    Source-http://java.dzone.com/articles/useful-subversion-pre-commit

    0 讨论(0)
  • 2020-12-04 14:42

    You can use a hook (put it into <repository>/hooks and name it pre-commit.bat (Windows)):

    @echo off
    ::
    :: Stops commits that have empty log messages.
    ::
    
    setlocal
    
    rem Subversion sends through the path to the repository and transaction id
    set REPOS=%1
    set TXN=%2
    
    rem check for an empty log message
    svnlook log %REPOS% -t %TXN% | findstr . > nul
    if %errorlevel% gtr 0 (goto err) else exit 0
    
    :err
    echo. 1>&2
    echo Your commit has been blocked because you didn't give any log message 1>&2
    echo Please write a log message describing the purpose of your changes and 1>&2
    echo then try committing again. -- Thank you 1>&2
    exit 1
    

    src: http://www.anujgakhar.com/2008/02/14/how-to-force-comments-on-svn-commit/

    0 讨论(0)
  • 2020-12-04 14:45

    If you are using TortoiseSVN only then you can add TortoiseSVN's property to the root directory: property name: tsvn:logminsize value: 1 This will disable OK button in TortoiseSVN commit window then Message is empty. Please be aware that this property is TortoiseSVN specific it might not work with other SVN client.

    0 讨论(0)
  • 2020-12-04 14:51

    Actually, when you create a Subversion repository, its hooks subdirectory already contains hook samples. Check out the one called pre-commit.tmpl for details on the hook's parameters. It also contains an example for a hook that you're looking for:

    #!/bin/sh
    REPOS="$1"
    TXN="$2"
    
    # Make sure that the log message contains some text.
    SVNLOOK=/usr/local/bin/svnlook
    $SVNLOOK log -t "$TXN" "$REPOS" | \
       grep "[a-zA-Z0-9]" > /dev/null || exit 1
    

    You can write your hook in any script or language, as long as it's executable on your Subversion machine.

    0 讨论(0)
  • 2020-12-04 14:54

    Create a pre-commit hook. Here's some instructions on how to do so yourself, or here is an example hook script that will reject anything with a commit message shorter than 10 characters.

    0 讨论(0)
提交回复
热议问题