Как я мог бы вынудить наших разработчиков ввести примечания при фиксации через TortoiseSVN? [дубликат]

Создайте словарь привязок:

public enum Face
{
    A, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, J, Q, K
}

public Dictionary<Face, string> cardValues = new Dictionary<Face, string> {
    [Face.A] = "A",
    [Face.Two] = "2",
    [Face.Three] = "3",
    ...
}

public string card = cardValues[Face.Two]; // "2"

Лично я бы просто сохранил значение карты как целое число и использовал бы массив вместо словаря и перечисления.

6
задан Jarrod Dixon 1 June 2015 в 14:01
поделиться

8 ответов

Наш скрипт для предварительной фиксации (пакет Windows):

@echo off & setlocal ENABLEEXTENSIONS

set SVNLOOK="E:\Subversion\Program\Subversion 1.5.0\bin\svnlook.exe"

set REPOS=%1%
set TXN=%2%
set LOGFILE=%REPOS%\hooks\log-%TXN%.txt
set GREP=E:\UnxUtils\usr\local\wbin\grep.exe

%SVNLOOK% log -t "%TXN%" "%REPOS%" >%LOGFILE%

set "first="
for /f "delims=" %%a in ('more ^< "%LOGFILE%"') do (
  if not defined first set first=%%a
)

del %LOGFILE%

if not defined first ( echo "Please supply a commit comment" >&2 & exit 1 )





REM Check for invalid windows characters in the path
echo Checking >%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "\" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find ":" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "*" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "?" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find """" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^>" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^<" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^|" >>%LOGFILE%

set "first="
for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do (
  if not defined first set first=%%a
)

del %LOGFILE%

if defined first ( echo "Please do not use filename characters which are invalid in  windows. - Found %first%" >&2 & exit 1 )






REM Tagblock - prevent changes to tag directories
echo Checking >%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | %GREP% "^U.*\/tags\/.*" | %GREP% -v -f "%REPOS%\conf\tag-block-exceptions.txt" >>%LOGFILE%

set "first="
for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do (
  if not defined first set first=%%a
)

del %LOGFILE%


if defined first ( 
    echo "%first% -- Error: Modifications to tag directories are blocked. To allow these modifications add the path to %REPOS%\conf\tag-block-exceptions.txt" >&2 
    exit 1 )
1
ответ дан 8 December 2019 в 12:20
поделиться

Вы можете определить сценарий ловушки перед фиксацией, который отклоняет все фиксации с пустым или слишком коротким сообщением журнала.

Вот сообщение о том, как это сделать .

5
ответ дан 8 December 2019 в 12:20
поделиться

Конечно, но как вы собираетесь принудительно применять не тарабарщину, содержательные и контекстуализированные сообщения о фиксации?

Лучше просто ударить своих безответственных коллег, когда вы заметите неубедительную / пустую фиксацию. Или словесный эквивалент удара. Просто убедитесь, что им плохо, это заслужено.

2
ответ дан 8 December 2019 в 12:20
поделиться

Я использовал сценарий ловушки перед фиксацией, чтобы гарантировать, что комментарий фиксации всегда ссылается на номер проблемы в системе отслеживания проблем. Например, такой комментарий, как

fixes frobulator when the moon is full (bug 1234)

, будет принят, потому что он содержит номер ошибки. Даже при таком расположении вы все равно должны доверить разработчику вставку значимого комментария и номера ошибки.

1
ответ дан 8 December 2019 в 12:20
поделиться

Вам необходимо использовать ловушку предварительной фиксации, которая является настройкой сервера, я написал ее для VisualSVN, которая в основном представляет собой пакетный файл - аналогичные сценарии доступны для серверов SVN, не использующих Windows .

@echo off
::
:: Stops commits that have empty log messages.
::
@echo off
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
call "C:\program files\visualsvn server\bin\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
3
ответ дан 8 December 2019 в 12:20
поделиться

Вы можете достаточно легко принудительно добавить комментарий коммита, но в итоге вы получите миллион коммитов, в которых написано «отладка» или «тестирование».

Если ваши разработчики этого не сделают. увидеть значение в добавлении сообщений фиксации, заставляющих их вводить что-то не изменит этого.

Что еще хуже, когда пользователи Eclipse интегрировали SVN / CVS таким образом, что они запоминают их последнее сообщение фиксации - и они в конечном итоге фиксируют совершенно не связанный файл с сообщением из их последней задачи / проекта.

1
ответ дан 8 December 2019 в 12:20
поделиться

TortoiseSVN - это клиент, вы можете захотеть принудительно комментировать сервер Subversion . Или вы можете попросить их прокомментировать свои коммиты.

0
ответ дан 8 December 2019 в 12:20
поделиться

Не TortoiseSVN, а сама Subversion - настройка на сервере. Вы можете настроить ловушку перед фиксацией, которая принудительно вводит комментарий фиксации. Существуют также хуки предварительной фиксации, которые проверят наличие ссылки на систему отслеживания проблем, такую ​​как Jira, если вы хотите пойти еще дальше.

6
ответ дан 8 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: