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

У меня есть упорный пользователь, который упрямо настаивает на том, чтобы фиксировать его двоичные файлы (исполняемые файлы, DLLs) в наши репозитории подрывной деятельности. Я вошел бы и удалил бы их, но конечно ничто действительно никогда не удаляется из подрывной деятельности.

В то время как существуют времена, когда мы должны фиксировать двоичные файлы, я не хочу пользователей, делающих его как стандартную программу. Я могу установить проигнорировать свойство, но это не препятствует тому, чтобы пользователи фиксировали двоичные файлы, если они действительно определяются. То, что я хотел бы сделать, быть в состоянии управлять способностью фиксировать назначенные типы файлов, особенно .exe и .dll файлы, на основе каталога каталогом.

Существует ли способ сделать это в SVN? Если это делает какой-либо differentce, мы используем сервер VisualSVN и TortoiseSVN.

13
задан Michael Hackner 1 February 2010 в 13:56
поделиться

5 ответов

Согласно Engadget, iPad запускает все приложения iPhone без изменений, что означает, что он поддерживает библиотеку Cocos2d.

Engadget

-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.

3
ответ дан 1 December 2019 в 22:57
поделиться

Запишите предварительный крюк, который проверяет добавленные файлы на соответствие вашим критериям.

Вы можете использовать pre-commit-check.py в качестве отправной точки.

3
ответ дан 1 December 2019 в 22:57
поделиться

Вы можете использовать предварительный коммит . Вам придется написать простую программу (на любом языке), которая возвращает ненулевое значение, если файл бинарный.

См. здесь для общей документации о репозиторийских крючках, а здесь для примера Pythone из Apache.

Вы можете посмотреть имена файлов или использовать файл , чтобы посмотреть на их типы.

3
ответ дан 1 December 2019 в 22:57
поделиться

Вы можете использовать скрипт крючком доступа, который проверяет, является ли файл двоичным или текстовым.

0
ответ дан 1 December 2019 в 22:57
поделиться

Вот маленький сценарий с крючками, который делает то, что вы хотите: Вы должны настроить 2 вещи:

  • illegal_suffixes: список питонов со всеми суффиксами, которые должны прервать коммит
  • cmdSVNLOOK: путь к программе svnlook

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)
5
ответ дан 1 December 2019 в 22:57
поделиться
Другие вопросы по тегам:

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