2011-01-26 2 views
0

Возможно ли предотвратить передачу указанного файла (пути) в репозиторий?Как запретить загрузку файлов в репозиторий?

Например, мы нуждаемся в somepath/database_config.php не в состоянии быть совершенным.

Я попытался использовать свойство svn:ignore, но, похоже, он работает только для рабочих копий, а не для хранилищ.

Я читал svnbook.red-bean.com об этой функции, но я чувствую, что мой мозг не может понять, почему вещи не работают, как я хочу.

+0

'svn: ignore' должен делать то, что вам нужно. Можете ли вы уточнить, что именно хотите предотвратить? –

+0

Когда я пытаюсь установить svn: игнорировать имя файла в репозитории svn говорит: '" Настройка свойства для нелокальной цели 'https://example.com/sample_path/config' нуждается в базовой ревизии '' – Azat

+0

, вы должны сделать свой propset на локальную версию, извлеченную из репозитория. Я не думаю, что вы можете установить его прямо на репозитории. – yvoyer

ответ

1

Вы можете использовать команду svn lock, чтобы предотвратить изменение определенного файла или пути в репозитории. Таким образом, для предотвращения того, чтобы определенный файл с когда-либо совершал, вы могли просто передать пустой файл (или который содержит «не фиксировать этот файл - configs должен быть сделан только на локальном компьютере»), а затем локально изменить файл чтобы содержать любой контент.

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

Дополнительная информация доступна в manual entry и more detailed documentation.

+0

В любом случае, у кого-то еще будет возможность _forced_ разблокировать этот файл, не так ли? – Azat

+0

Эй, Джефф удалил http://stackoverflow.com/questions/234075/what-is-your-best-programmer-joke, поэтому я не собираюсь восстанавливаться и мигрировать. Я бы спросил в мета, если тебе действительно все равно. – Will

+0

Если кто-то заблокировал какой-то файл (даже мне), он не позволяет мне фиксировать какие-либо другие изменения из рабочей копии в репозиторий. – Azat

3

FYI: svn:ignore будет работать только в том случае, если файл для игнорирования НЕ находится в репозитории.

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

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

именно: Шаблон файла: database_config.php.template

$config = array(
    'host'  => 'XXXX', 
    'db'  => 'XXXX', 
    'user'  => 'XXXX', 
    'password' => 'XXXX', 
); 

Файл конфигурации: database_config.php

$config = array(
    'host'  => 'XXXX', 
    'db'  => 'XXXX', 
    'user'  => 'XXXX', 
    'password' => 'XXXX', 
); 

Вы бы сделать эти команды SVN добавить в репозиторий ,

// Add the template 
svn add database_config.php.template 
// Ignore the config file used by the system (Should not be in repository) 
svn propset svn:ignore "config.php" . 
svn commit 
+0

'svn propset svn: ignore' должен выполняться каждым разработчиком? – Azat

+0

@Azat, Нет, вы делаете это один раз в каталоге, где вы добавили файл шаблона. Игнорирование будет эффективным для всех после этого. Он никогда не появится в статусе 'svn'. – yvoyer

+0

Я пытаюсь сделать это в каталоге репозитория, но svn говорит мне, что он «нуждается в базовой ревизии». – Azat