Список идиотов для mercurial с визуальной студией 2010

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

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

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

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

Создание:

  • Я создаю новое репо в интернет-печи.
  • Затем clone на моем компьютере.
  • Я копирую всю папку проекта (решение с несколькими проектами в этой папке) в репо.
  • Я добавляю этот контент в файл .hgignore в корне репо.
  • От TortoiseHg Я хочу добавить файлы
  • Я иногда совершаю VS.
  • Когда я готов и готов, я иду Sync- > Push
    (Итак, все это хорошо?)

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

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

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

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

Ветвление:

Итак, я немного запутался в названии ветвления, но Kiln - как свое собственное подразделение /clone thingy. я читайте инструкции здесь

  • Итак, онлайн, у меня есть опция, которая создает "Branch" в Kiln онлайн.
  • Затем я буду клонировать это как новое репо локально (как если бы это было новое репо)
  • Я сделаю свои изменения, зафиксирую, нажимаю.
  • Затем я вырвусь из MAIN repo и выталкиваю из своего репинга ветки в MAIN.

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

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

alt text


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

Ответы

Ответ 1

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


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

Правильно.

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

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


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


Вы забыли слиться?

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


У Kiln и Fogcreek есть другое понятие о том, как обращаться с ветвями, чем у многих других. Они предлагают вам создать совершенно другой репозиторий веток и работать в нем вместо использования названных ветвей. Именованная ветка будет сродни тому, что вы назовете три набора изменений на скриншоте (3, которые заканчиваются на "final commit" ) в качестве ветки для добавления новой формы или исправления большой ошибки.

Таким образом, вместо того, чтобы делать то, что вы здесь сделали, имея 3 головы, "путь" "Кинн" должен состоять в том, чтобы иметь 3 клона, каждый с только наборами изменений до своей ветки. В принципе, у вас было бы 1 репо-клон со всем до "добавленной 2-й формы" и продолжением "второго proj", но изменений между ними не было. Второй клон имел бы "добавленную 2-ю форму", а затем одну дополнительную помеченную "добавленную кнопку для формирования", а третья имела бы "добавленную вторую форму", а затем три окончания с "окончательным фиксацией".

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


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

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

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

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

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

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

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

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

Ответ 3

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

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

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

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

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