Mercurial новичок: можно ли синхронизировать две уже существующие базы кода? - PullRequest
1 голос
/ 07 февраля 2012

Недавно я начал работать над «переносной» версией проекта, скопировав все файлы в новый каталог. Переносимый каталог отличается от стабильного каталога только тем, что было удалено или закомментировано; ничего не было добавлено.

Я наконец решил, что пришло время изучать систему контроля версий. Все говорят, что простой запуск важнее всего, и я в конечном итоге выбрал Mercurial, так как он хорош для ветвления, и (что более важно) мне понравились учебники, которые я нашел в Интернете (например, http://hginit.com и http://hgbook.red - bean.com/).

Я сделал репозиторий для своего стабильного каталога и клон в центральном репозитории (Dropbox). Я фиксирую, нажимаю и т. Д. Теперь, однако, я хотел бы связать мой (уже существующий) переносимый каталог с центральным репозиторием. Я хотел бы иметь возможность, скажем, исправить ошибку в моем стабильном коде, перенести ее в центральный репозиторий, а затем перенести исправление ошибки в переносную версию - не изменяя ничего в переносимом коде.

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

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

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

Что я хотел бы сделать, так это сначала проверить последние изменения в стабильной ветке и убедиться, что у вас есть резервная копия репозитория на случай, если что-то пойдет не так. Затем я удалил бы все из вашего каталога стабильного хранилища, кроме каталога .hg и любых других файлов управления хранилищем, таких как .hgignore, .hgsub, .hgeol и т. Д. Затем я скопировал бы переносную версию в этот каталог и запустить hg addremove. Команда addremove автоматически добавит все новые файлы и удалит все отсутствующие файлы (которые в этом случае должны быть просто удалены). Теперь я бы пометил это как отдельную ветку с hg branch <branch_name>, где <branch_name> - это то, что вы хотите назвать своей переносимой веткой. Тогда просто hg commit как обычно.

Теперь у вас есть стабильная ветвь (называемая «default», если вы ее не переименовали) и ваша новая переносимая ветвь. Теперь, когда вы вносите изменения в стабильную ветку, вы можете hg update в вашей переносимой ветке и запустить hg merge default (или заменить default на имя вашей стабильной ветки), чтобы объединить эти изменения в переносимую ветку.

1 голос
/ 07 февраля 2012

Вам нужно будет клонировать «центральный» репозиторий в ваш портативный каталог, прежде чем вы сможете выполнять любую работу, как вы описали.Тем не менее, легко исправить это скопировать ваш портативный каталог в другое место и создать новую пустую папку.Затем клонируйте свой репозиторий в этот каталог.После этого вы сможете просто скопировать и вставить свой предыдущий переносимый каталог в клонированную версию и позволить ему перезаписывать там файлы.Это позволит вам зафиксировать эти изменения в управлении версиями и синхронизироваться с центральным репозиторием.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...