2011-12-15 3 views
0

У меня есть сценарий, как этотМодификация предварительной фиксации крюка сценария

#!/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-z a-z]” && exit 0 
echo “Please write a log message describing the purpose of your changes and then try c 
ommitting again.” 1>&2 
exit 1 

Если у меня есть возможность отслеживать только CPP файлы из svnlook и бросить ошибку, если условие не выполняется, то, что еще я должен добавить этот сценарий?) Gr и найти логику не работает **

+0

Есть ли опечатка в вашем grep? 'grep [A-Za-z]'? grep '\ w +' было бы лучше, я думаю. – Barry

+0

Команда grep отлично работает, ... (я имею в виду, что команда grep и find не работает для отслеживания файлов cpp), как отслеживать только файлы .cpp из svnlook – priya

+0

Вы уверены, что каждая фиксация состоит только из файлов '.cpp' или нет. ? Что должен делать скрипт, если есть смесь? – mliebelt

ответ

0

Итак, объясните, что именно вы хотите:

  1. Если все файлы .cpp файлов, вы хотите, чтобы проверить совершить комментарий. В противном случае вы хотите проигнорировать комментарий.
  2. Если некоторые файлы являются файлами .cpp, вы хотите проверить комментарий фиксации. В противном случае вы хотите проигнорировать комментарий.
  3. Вы хотите только .cpp файлов в вашем репозитории. Ничего больше. И вы хотите отклонить любые коммиты, содержащие не-C++-файл.

Независимо от того, что вы делаете, вам необходимо запустить команду svnlook changed и посмотреть все файлы, которые были изменены. Помните, что для всех файлов есть только один комментарий коммита.

Я был бы удивлен, если вы сомневаетесь в причине причины № 3. C, конечно, требует Makefile на стороне Unix, и если вы используете IDE, которая позволяет вам указать сборку без Make-файлов, то есть файлы , которые необходимо сохранить.

Возможно, вы захотите проверить мои kitchen sink pre-commit hook. Этот крюк предварительной фиксации будет обрабатывать практически любую ситуацию, которую вы хотите. Он использует файл управления для конфигурации, поэтому вам не нужно изменять код.

Хотите, чтобы люди не работали над любыми файлами, отличными от C++?

# Remove all permission 
[file You don't have permission to add these files to the repository] 
match = .* 
access = read-only 
users = @ALL 

# Allow only files ending in .cpp 
[file You don't have permission to add these types of files to the repository] 
file = **/*.cpp 
access = read-write 
users = @ALL 

# Users must be able to add directories 
[file You don't have permission to add these types of files to the repository] 
match = /$ 
access = read-write 
users = @ALL 

# Probably want to allow the addition of Makefiles too 
[file You don't have permission to add these types of files to the repository] 
match = [mM]akefile$ 
access = read-write 
users = @ALL 

Хотите, чтобы данные о комментировании были действительны?

[revprop You must add a VALID comment to your commits] 
property = svn:log 
value = .{10,} 
type = regex 
Смежные вопросы