SVN: игнорирование уже зафиксированного файла - PullRequest
23 голосов
/ 03 апреля 2009

У меня есть файл настроек, который находится под контролем версий с использованием Subversion. У каждого есть своя копия этого файла, и мне нужно, чтобы ее никогда не передавали. Однако, как я уже сказал, под контролем версий уже есть копия. У меня вопрос: как мне удалить этот файл из контроля версий, не удаляя файл каждого, а затем добавить его в список игнорирования, чтобы он не был зафиксирован? Я использую командную строку Linux svn.

Ответы [ 6 ]

22 голосов
/ 03 апреля 2009

Сделайте чистую проверку, svn delete файл и добавьте игнорирование. Тогда совершите это. Всем остальным придется позаботиться (один раз), чтобы их локальная копия не была удалена на следующем svn update, но после этого локальный файл останется без изменений и будет игнорироваться SVN.

15 голосов
/ 03 апреля 2009

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

Я бы предложил следующее: сохраните файл настроек по умолчанию (без паролей, имен хостов, строк подключения и т. Д.) В SVN, назовите его как settings.dist и позвольте коду работать с его копией, названной по имени settings. Каждый разработчик должен сделать эту копию один раз, а затем может работать со своими персонализированными настройками. Если есть дополнения, добавьте их в settings.dist - все остальные получат их с обновлением и смогут затем объединить в свою персональную копию.

1 голос
/ 04 июня 2009

После удаления файла ваши пользователи должны будут восстановить файл из хранилища, используя svn export.

$ svn export -r x path ./

Где x - это ревизия, в которой файл существовал до удаления, path - полный путь к файлу, а ./ - место размещения файла.

См. svn help export для получения дополнительной информации.

0 голосов
/ 19 сентября 2016

У меня похожая проблема. В моем случае это автоматически сгенерированный файл пользовательских настроек (visual studio), который был случайно зарегистрирован в самом начале проекта. Хотя простое удаление может сработать, кажется, что correct больше удаляет его из истории, поскольку его вообще не должно было быть.

Я сталкивался с этим, что может быть новой функцией, поскольку этот вопрос был впервые опубликован 7,5 лет назад:

https://stackoverflow.com/a/6025750/779130

Похоже, что идея будет:

1) create a dump of the project.
2) filter the dump using `svndumpfilter` to exclude the unwanted file(s).
3) load the dump as a new project.

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

0 голосов
/ 04 апреля 2009

[[ Я новичок в Subversion, так что, возможно, это не имеет смысла. пометка этого как вики - если вы знаете правильный ответ, пожалуйста, ПРИЛОЖИТЕ в следующем разделе ]]

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

$ svn checkout http://example.com/project  project
..
$ dir project
original_settings\     folder1\     folder2\ 
$ svn checkout http://example.com/project/aaron_settings project\settings
..
$ dir project
original_settings\     folder1\     folder2\    settings\

Или для новых пользователей

$ svn import project\settings  http://example.com/project/aaron_settings

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

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

ЭНЦИКЛОПЕДИЯ:

(пока ничего)

0 голосов
/ 03 апреля 2009

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

В мире, основанном на муравьях, у вас есть файлы:

settings.properties
settings-local.properties (ignored for Subversion)

и в вашем build.xml файле

<property file="settings-local.properties"/>
<property file="settings.properties"/>

Для тех, кто не смог соединить точки:

  1. изменить файл build.xml, как предложено
  2. установить setting-local.properties как игнорируемые
  3. в цели init вашей сборки скопируйте settings.properties в settings-local.properties
  4. подождите пару дней, пока у всех не появится шанс выполнить эту цель
  5. удалить файл setting.properties из Subversion

Вуаля, у каждого разработчика свои собственные настройки-local.properties, и все было сделано автоматически (и ни один разработчик не потерял свои настройки, что происходит, если вы жестоко удаляете файл из Suvbersion, а его нет) береги себя ... ")

...