Я понимаю git, Subversion, CVS и множество других систем управления версиями.
Я начал использовать Accurev, и это меня пугает.
Я считаю, что мне нужно сформировать ментальную модель, которая связывает ее с другими SCM. Идеально относительно git, потому что я лучше понимаю git.
Я бы объяснил git как "ориентированный граф коммитов, где фиксация - это diff, родительский (или родительский) хеш и сам хэш". Вы можете легко перейти оттуда, чтобы объяснить такие понятия, как rebase и то, что действительно сливается, ускоренное переключение против фактических слияний и т.д. Мне было легко научить новых пользователей сложным концепциям git примерно через 15-20 минут.
Я бы очень хотел понять Accurev на этом уровне. Так что...
Что представляет собой некогда предложение абстракции того, как работает Accurev, что позволяет объяснить, как он себя ведет?
Некоторые примеры вопросов, на которые мне хотелось бы ответить:
- Что происходит, когда я "храню" некоторые файлы и затем "продвигаю" их?
- Что делать, если я не продвигаю те же файлы, что и я?
- Почему история иногда ошибочно присваивается при возникновении непротиворечивых (a.k.a. перекрывающихся) обновлений? Это, в частности, напоминает режим отказа Subversion, который из основных объяснений, которые я слышал, я не думаю, что должен существовать с Accurev.
- Почему разницы почти никогда не содержат того, что я ожидаю от них? Я считаю, что случается, что diff на основе показывает мне diff против текущего (движущегося) родительского потока, но я действительно хочу только увидеть изменения, которые я сделал с момента последнего обновления.