Модификация скрипта ловушки перед фиксацией - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть такой скрипт

#!/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 и выдавать ошибку, если условие не выполняется, что еще мне следует добавить с помощью этого сценария? ) grep и найди логику не работает **

1 Ответ

0 голосов
/ 29 июля 2012

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

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

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

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

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

Хотите запретить людям добавлять файлы, не относящиеся к 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
...