Масштабируется ли Git таким же образом, если я использую ветви вместо ревизий?

#git #version-control #scalability

#git #контроль версий #масштабируемость

Вопрос:

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

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

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

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

Я знаю, что это странный способ использования Git, но будет ли он масштабироваться?

dbyrne запросил usecase. Я не уверен, помогает ли, но вот оно:

  • Я планирую версировать бродячие метаданные
  • У меня есть некоторый проект в отдельном SCM (например, SVN), и каждая ревизия принадлежит виртуальной машине Vagrant
  • У каждой виртуальной машины Vagrant есть метаданные и установочные файлы, которые часто будут одинаковыми для многих ревизий
  • Иногда мне приходится изменять метаданные, и мне нужно поддерживать ветви моего проекта, поэтому я хотел использовать ветви Git для каждой ревизии
  • Мое приложение будет отслеживать ревизии проекта и метаданные Git
  • Мое приложение будет проверять соответствующие файлы для каждой заданной версии проекта
  • С помощью метаданных можно ароматически создавать виртуальную машину для каждой ревизии проекта

Ответ №1:

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

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

Комментарии:

1. Я не уверен, помогает ли usecase, но я соответствующим образом отредактировал свой вопрос.

Ответ №2:

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

Мне всегда говорили, что Git предназначен для интенсивного использования ветвей (это главное преимущество IMO), так что да, он должен масштабироваться.

HTH

Пол

Ответ №3:

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

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

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