Я прочитал много статей "перейдите от svn до git" и других статей "git -svn workflow" в Интернете, и все же я думаю, что они часто имеют дело с чрезмерно простыми ситуациями. Они часто нацелены на парней, которые просто хотят использовать git и взломать локально, не используя полную мощность git, например, pull, fetch, merge и т.п. между несколькими разработчиками, которые все бы клонировали репозиторий svn с помощью git -svn, то все равно ожидайте, что сможете в любое время внести изменения в (официальный) svn-репозиторий и вернуться к работе в git и поделиться своим материалом и т.д.
Всякий раз, когда эти статьи признают, что вы не можете делать все, что вы сделали бы в чистом git, последствия и возможные зависания никогда не будут четко разъяснены (или, может быть, это только я?). Даже страница git -svn man упоминает оговорки, но не очень широко.
На основании того, что я прочитал, я чувствую, что могут возникнуть проблемы, когда git -svn используется таким образом, о чем я расскажу ниже. Может ли кто-нибудь сказать мне, если я прав по этому поводу?
Вот "желаемый" способ делать вещи:
- У нас есть проект в репозитории svn
- Разработчик A git -svn-клонировать svn repo. Он начинает рушить вещи локально.
- Разработчик B git -svn-клонировать то же самое svn repo. Он сам начинает разбирать вещи.
- После этого в течение некоторого времени, возможно, добавив devs C/D/... и имея других разработчиков, которые выполняют "стандартные" svn, фиксирует исходное репо, пользователи git хотели бы поделиться своим кодом и сделать все виды магии git.
- Любой из этих пользователей git хотел бы использовать текущие объединенные изменения для svn (dcommit?)
Мой вопрос: я мечтаю? Я читал некоторое время назад, в книге git, я думаю, что git -svn-clone может создавать репозитории git, которые, конечно, являются "зеркалом" репозитория svn, но этот git repos создал у разных разработчиков будут разные "идентификаторы", и у коммитов будут разные хэши. Поэтому я понял, что эти репозитории git не будут иметь общего предка git и, следовательно, не смогут использовать все команды git, которые вам нужно разделить, объединить и т.д. Это правда, мы столкнемся с проблемами с этим документооборотом?
Иногда я читал, что это можно сделать, используя хотя бы "официальный" годовой репозиторий git, который был бы единственным, кто был бы git -svn-клонирован, и всем пользователям git приходилось начинать сформируйте это. Тогда вам нужен кто-то, кто отвечает за это центральное репо git, и собирает изменения между git devs, прежде чем dcommiting все в svn repo. Это было бы единственным способом для пользователей git "не знать", что исходный репозиторий git поступает из svn и позволяет им использовать все команды git по своему усмотрению. Единственный человек, который должен был бы свободно говорить как git, так и svn (и знать о git -svn оговорках), будет "менеджером слияния" (или тем, что он назвал).
Я полностью недопонимаю git -svn оговорки? Есть ли более простой способ сделать это?