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