Контрольный список идиотов для Mercurial с Visual Studio 2010 - PullRequest
13 голосов
/ 15 декабря 2010

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

Я наконец-то решил использовать Mercurial + TortoiseHg + (VS2010 + HgSccPackage ) + Печь для моего следующего проекта.

Я прочитал http://hginit.com/, и я немного поиграл, но я не очень разбираюсь в управлении исходным кодом, поэтому не хочу ошибаться, мой текущий проект - мой самый большойи самый ценный еще.

Так вот мой контрольный список:

Создание :

  1. Я создаю новый репо в печи онлайн.
  2. Затем клонируйте на моем компьютере.
  3. Я копирую всю папку проекта (решение с несколькими проектами в этой папке) в хранилище.
  4. Я добавляю это содержимое в файл .hgignore в корне хранилища..
  5. С TortoiseHg Я нажимаю добавить файлы
  6. Я иногда фиксирую с VS.
  7. Когда я готов и готов, я иду Sync-> Push
    (Значит, все хорошо, верно?)

Одна проблема У меня здесь есть.Я не могу найти Add Files эквивалентный в HgScc, я заметил, когда я добавил новые файлы из VS-IDE, у него нет иконки для управления исходным кодом.(Это не добавлено в Mercurial?)

Так что я закончил добавлять файлы через IDE, и у них не было чека.Затем, после нескольких коммитов (и других вещей, которые я не помню), я заметил, что была дополнительная ветка или что-то вроде: alt text

И теперь, если я пойду, попробую нажать, я получу "(did you forget to merge? use push -f to force)".(И да, я нажимаю на входящие, и у меня НЕТ в предстоящих изменениях)

В любом случае, была просто игровой площадкой, ** Я только что понял, что TortoiseHG -> Добавить файлы каждый раз, когда я создавал файлы из VS, исправляет ошибки?** (Или есть лучший способ здесь?)

Ветвление:

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

  1. Итак, онлайн, у меня есть возможность создать "Отделение" в печи в режиме онлайн.
  2. Затем я локально клонирую это как новый репо (как если бы это был новый репо)
  3. Я внесу свои изменения, зафиксируйте, нажмите.
  4. Тогда я 'Я возьму из ГЛАВНОГО репо и перенесу из моего филиала в ГЛАВНУЮ.

Так что я не вижу здесь никакой возможности слияния, я предполагаю, что Mercurial обрабатывает слияние самостоятельно?Так что я не вижу ветку из обозревателя хранилища?Это как это должно быть сделано?

Последний вопрос, в чем разница между параметрами Просмотр истории и Просмотр журнала изменений и каким параметрам hg они соответствуют?:

alt text


Обновление : забыл упомянуть, что я единственный разработчик в этом проекте.= Р * * тысяча восемьдесят-два

Ответы [ 3 ]

13 голосов
/ 15 декабря 2010

Вот ваши индивидуальные вопросы, по одному на раздел, с моим мнением / ответом на каждый.


7.Когда я в порядке и готов, я иду Sync-> Push (Так что все хорошо, верно?

Правильно.

Единственное, что может отличаться в этом рабочем процессе, это еслиКто-то еще толкает в тот же репозиторий. Если у вас это есть, в какой-то момент кто-то еще отправил наборы изменений в репозиторий, которого у вас нет локально. Когда вы пытаетесь протолкнуть свой набор, который создаст ветку в онлайн-репозитории,становится видимым несколькими «головами» (вы должны искать этот термин в контексте Mercurial, если не понимаете, что я имею в виду под этим.) Обычно вы не позволяете этому произойти, поэтому толчок будет прерван.

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


Что касается HgSCC и добавления файлов, у меня были проблемы с HgSCC, поэтомуотносился к VisualHg - http://visualhg.codeplex.com, именно потому, что, похоже, что-то не так с версией 1.52 HgSCC в отношении новых файлов.Если вы не можете найти решение для этого, я бы посоветовал вам попробовать VisualHG.


Вы забыли объединить?

Вы должны объединить свойменяется вместе, так что у вас снова только одна голова.В этом примере у вас есть 3 скриншота: «кнопка добавлена ​​в форму 2», «финальный коммит» и «2nd prj (2)».Вы должны обновить тот, который вы считаете «большей частью вашего проекта», выбрать его, затем щелкнуть правой кнопкой мыши по одной из других головок и выбрать «Объединить с ...» в TortoiseHg, и завершить слияние и фиксацию.Каждый такой коммит слияния + удалял бы 1 голову, поэтому вам нужно как минимум 2 таких слияния, чтобы вернуться к 1 голове.


Печь и Фогкрик имеют другое представление о том, как обрабатывать ветви, чем многие другиеиметь.Они предлагают вам создать совершенно другое хранилище веток и работать в этом, вместо того, чтобы использовать именованные ветки.Именованная ветвь будет похожа на то, как вы называете три набора изменений на скриншоте (3, заканчивающиеся на «финальный коммит») как ветвь для добавления новой формы или исправления большой ошибки.

Поэтому вместо выполнениято, что вы сделали здесь, имея 3 головы, «путь» Килна состоял бы в том, чтобы иметь 3 клона, каждый из которых имеет только наборы изменений до их головки ветви.В основном у вас будет 1 клон репо со всем до «добавленной 2-й формы» и продолжением со «вторым проектом», но промежуточных наборов изменений там не будет.Второй клон будет иметь до «добавленной 2-й формы», а затем один дополнительный, помеченный «добавленной кнопкой к форме», а третий будет иметь «добавленной 2-й формы», а затем три, заканчивающиеся на «окончательный коммит».*

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


Я предполагаю, что Mercurial обрабатывает объединение самостоятельно?

Объединение в вашем сценарии вступит в действие только в том случае, если у вас есть новые наборы изменений в обоихисходный репозиторий и в вашем клоне репозитория ветвлений.

Если у вас это есть, перемещение из репозитория веток в исходный репозиторий (или перетягивание другим способом) добавит новые головы в ваш целевой репозиторий.Это то, что слияние поможет вам избежать.

Таким образом, ваш рабочий процесс будет выглядеть следующим образом:

  1. Вставьте все изменения, которые у вас есть, в ваш репозиторий ветвей (т.е.по той причине, что вам сначала понадобился репозиторий веток, большое исправление, новая функция, большая перезапись, что угодно)
  2. Попробуйте перейти из репозитория веток в исходный репозиторий, получив сообщение, что это создаст головы в целихранилище, так что вы прервите это.
  3. Извлечь из исходного хранилища вниз в хранилище веток.Это создаст еще одну головку.
  4. Вытащите из хранилища веток в локальный репозиторий и выполните слияние здесь, обрабатывая все конфликты слияний и, наконец, фиксируя ваш набор изменений слияния
  5. Push из локального репозитория обратнов хранилище веток
  6. Завершите все проверки кода, которые вы, возможно, захотите сделать в Kiln, прежде чем делать его официальнымеще (или вы) проделали большую работу в исходном хранилище, вернитесь к шагу 3 и повторите)

разница между параметрами Просмотр истории и Просмотр журнала изменений

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

Просмотр журнала изменений просматривает журнал изменений для репозитория, независимо от того, что вы выбрали.

9 голосов
/ 18 декабря 2010

Распечатайте это, ламинируйте и наклейте на стену.Я сделал.

http://secretgeek.net/mercurial_flow.asp

3 голосов
/ 15 декабря 2010

Если ваш проект еще не контролируется Mercurial, вам следует использовать команду «Добавить в систему контроля версий». Щелкните правой кнопкой мыши решение или файл проекта в обозревателе решений и выберите команду в контекстном меню. Эта команда также создаст хранилище в месте решения / проекта, если его нет.

Если вы добавили проект в Mercurial за пределами Visual Studio, вам необходимо перезагрузить проект в IDE. В противном случае HgSccPackage не знает, что проект находится под контролем.

Если проектом управляют, то добавление существующих или новых файлов в этот проект из IDE автоматически добавит их в Mercurial.

Команда слияния доступна в диалоговом окне «Журнал изменений». Чтобы выполнить слияние, вам нужно «Обновить» до Rev1, затем выбрать ревизию, с которой вы хотите объединить (Rev2), а затем запустить команду «Слияние», используя команду панели инструментов или команду контекстного меню.

Если вы считаете, что нашли ошибку в HgSccPackage, создайте проблему с шагами для воспроизведения на трекере проблем HgSccPackage (http://bitbucket.org/zzsergant/hgsccpackage/issues).

...