Добавление неверсированных файлов в подрывную

Можно ли добавлять файлы в subversion, которые не должны быть версиями? F.ex. config файлы, которые необходимо отредактировать, чтобы соответствовать каждой отдельной среде. Когда к программисту подключен новый программист, он должен получить исходный файл из подрывной деятельности, но он не будет зачислен после его редактирования, и он не будет перезаписан, когда он будет обновлен.

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

Любые идеи?


Разъяснение комментариев ниже: Проект (Sitecore) состоит из около 30 тыс. Номеров различных файлов. Нам нужно выпустить около 100 из них. Если мы должны включать все файлы в версии, то каждая фиксация берется навсегда (как черепаховый поиск во всех папках). Сегодня мы создаем zip файл, содержащий все непереведенные папки, устанавливаем папки как игнорируемые в svn, а затем добавляем zip. Проблема в том, когда нам нужно изменить один или несколько файлов в zip, тогда нам нужно зафиксировать новый ~ 1GB-zip для репо.

Ответ 1

Я бы поместил файлы без вершин на веб-или файловый сервер, доступные всем, используя проект, и добавьте script для автоматического (wget/scp/etc.) загрузка файлов (zipped if необходимо) и извлечь их в svnignored папки, чтобы они не подхватывались подрывной деятельностью.

Если вас беспокоит изменение этих файлов, то: не следует ли их версировать?

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

Ответ 2

В некоторых случаях нет необходимости создавать web.config для каждого разработчика, так как формат конфигурации .Net позволяет переопределять определенные разделы вашего файла конфигурации через атрибут configSource.

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

<?xml version="1.0"?>
<configuration>
  <connectionStrings configSource="connections.config">
      <add name="LocalSqlServer" 
           connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
           providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

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

(Таким образом, это не устраняет проблему с шаблонами, но может помочь вам управлять большим шаблоном, как многие маленькие)

Ответ 3

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

Ответ 4

Вам нужно переосмыслить, как вы используете субверсию. Subversion хранит информацию о версиях файлов; Не больше, не меньше. Вы не можете хранить непереведенные файлы в subversion; не имеет никакого смысла. Хранение почтового индекса на 1 ГБ в подрывную деятельность тоже не принесет ничего хорошего.

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

Ответ 5

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

Файл шаблона никогда не изменяется (если не существует разницы в формате файла конфигурации, конечно).

В ответ на ваше редактирование (и комментарий):

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

Ответ 6

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