У меня есть упорный пользователь, который упрямо настаивает на том, чтобы фиксировать его двоичные файлы (исполняемые файлы, DLLs) в наши репозитории подрывной деятельности. Я вошел бы и удалил бы их, но конечно ничто действительно никогда не удаляется из подрывной деятельности.
В то время как существуют времена, когда мы должны фиксировать двоичные файлы, я не хочу пользователей, делающих его как стандартную программу. Я могу установить проигнорировать свойство, но это не препятствует тому, чтобы пользователи фиксировали двоичные файлы, если они действительно определяются. То, что я хотел бы сделать, быть в состоянии управлять способностью фиксировать назначенные типы файлов, особенно .exe и .dll файлы, на основе каталога каталогом.
Существует ли способ сделать это в SVN? Если это делает какой-либо differentce, мы используем сервер VisualSVN и TortoiseSVN.
Согласно Engadget, iPad запускает все приложения iPhone без изменений, что означает, что он поддерживает библиотеку Cocos2d.
-121--3690535-void PreviewTextInputHandler(object sender, TextCompositionEventArgs e)
{
string sVal = e.Text;
int val = 0;
if (sVal != null && sVal.Length > 0)
{
if (int.TryParse(sVal, out val))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}
}
-121--928564- На TortoitySVN пользователь может добавить .dll, .exe и т.д. в список игнорирования. Таким образом, пользователь не будет случайно проверять их. См. здесь для получения дополнительной информации:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-ignore.html
На стороне сервера, как заявили другие, можно использовать скрипт hook.
Запишите предварительный крюк, который проверяет добавленные файлы на соответствие вашим критериям.
Вы можете использовать pre-commit-check.py в качестве отправной точки.
Вы можете использовать предварительный коммит . Вам придется написать простую программу (на любом языке), которая возвращает ненулевое значение, если файл бинарный.
См. здесь для общей документации о репозиторийских крючках, а здесь для примера Pythone из Apache.
Вы можете посмотреть имена файлов или использовать файл , чтобы посмотреть на их типы.
Вы можете использовать скрипт крючком доступа, который проверяет, является ли файл двоичным или текстовым.
Вот маленький сценарий с крючками, который делает то, что вы хотите: Вы должны настроить 2 вещи:
import sys
import subprocess
import re
#this is a list of illegal suffixes:
illegal_suffixes = ['.exe','.dll']
# Path to svnlook command:
cmdSVNLOOK="/usr/bin/svnlook";
def isIllegalSuffix(progname):
for suffix in illegal_suffixes:
if (ptFilename.endswith(suffix)):
return True
return False
######### main program ################
repopath = sys.argv[1]
transact = sys.argv[2]
retVal = 0
svninfo = subprocess.Popen([cmdSVNLOOK, 'changed', '-t', transact, repopath],
stdout = subprocess.PIPE, stderr=subprocess.PIPE)
(stdout, stderr) = svninfo.communicate();
prog = re.compile('(^[ACUDRM_])[ACUDRM]*\s+(.+)') # regex for svnlook output
for line in stdout.split("\n"):
if (line.strip()!=""):
match=re.search(prog, line.strip())
if match:
mode = match.group(1)
ptFilename = match.group(2)
if mode == 'A' and isIllegalSuffix(ptFilename):
retVal = 1
sys.stderr.write("Please do not add the following ")
sys.stderr.write("filetypes to repository:\n")
sys.stderr.write(str(illegal_suffixes)+"\n")
break
else:
sys.stderr.write("svnlook output parsing failed!\n")
retVal = 1
break
else:
# an empty line is fine!
retVal = 0
sys.exit(retVal)