Должен ли я поместить мои выходные файлы в систему контроля версий? - PullRequest
3 голосов
/ 07 декабря 2009

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

Мне это кажется неправильным, но я не могу этого объяснить. Каждый ресурс, который я нахожу об управлении исходным кодом, говорит мне не помещать сгенерированные выходные файлы в систему контроля версий. И я понимаю, это не "исходные" файлы.

Однако мне были представлены следующие аргументы:

  • Кого это волнует? У нас много пропускной способности.
  • Я не против разрешения конфликта каждый раз, когда я получаю последнюю версию, это всего лишь один клик
  • Это намного удобнее, чем думать о хороших файлах игнорирования.
    • Кроме того, если мне сейчас нужно добавить внешний DLL-файл в папку bin, я не могу забыть поместить его в систему контроля версий, поскольку папка bin теперь не игнорируется.

Простое решение для последнего пункта - добавить файл в папку библиотеки и сослаться на него из проекта.

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

Ответы [ 3 ]

3 голосов
/ 07 декабря 2009

Сгенерированные выходные файлы (в общем) являются «опасными» в VCS, потому что:

  • что вам нужно для версии, это как их регенерировать: в тот день, когда вам нужно будет их обновить, скорее всего, вы не помните, как это сделать
  • они могут содержать некоторый частный сгенерированный файл, который заставляет их работать на рабочем столе коммиттера, но не на клиентском («работает на моей машине» TM синдром)
  • некоторые сгенерированные файлы нелегко хранятся в дельте (особенно двоичном), поэтому они занимают много места (и тема очистки этого пространства когда-нибудь появится ...)

Внешние библиотеки не создаются непосредственно вашим проектом и могут быть помещены в VCS, хотя внешние репозитории, такие как общедоступное хранилище Maven, лучше в этом виде управления.

3 голосов
/ 07 декабря 2009

Вы не объяснили, что такое "файл базы данных".

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

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

Самый важный практический аргумент, который я бы выдвинул против включения всего, что в мире, где диск, процессор и сеть считаются бесплатными и мгновенными, состоит в том, что ему труднее сказать, что на самом деле изменено для любого данного коммита. Проще просмотреть список из 3 исходных файлов, чем 3 исходных файла и 150 двоичных файлов из каталогов obj / bin.

1 голос
/ 07 декабря 2009

Размещаем ли мы также скомпилированные объектные файлы, такие как файлы классов, исполняемые файлы, библиотеки DLL, из нашего исходного кода? Как насчет того, когда мы проводим серьезное объемное тестирование, и эта база данных становится размером в несколько гигабайт или терабайт?

Подсказка в названии: Источник Система управления кодами.

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

Я думаю, что ключевая фраза здесь:

Это намного удобнее, чем приходится думать о хорошем игнорировании файлы

Вам явно запрещено иметь хорошие игнорируемые файлы? Я предполагаю, что вы уже исключаете файлы .exe и .class (или что-то еще). Предположим, вы предприняли попытку исключить вашу базу данных, это будет проблемой? Зачем? Это осознанное действие, которое вы выбираете для общего блага. В Eclipse требуется несколько секунд, чтобы добавить новый тип файла в правила игнорирования CVS рабочей области для всех проектов.

Правило «Не игнорировать файлы» почти самоочевидно. Если у вас есть свобода, есть некоторые файлы игнорирования, тогда почему бы просто не использовать их разумно, чтобы исключить БД? Кто не имеет права? Только вы, если кто-нибудь, и вы готовы сделать дополнительную работу.

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