Позвольте мне сначала описать, что я хотел бы сделать и почему я хочу это сделать, а затем позвольте мне рассказать вам, что я пытался и какие у меня были проблемы.
У меня есть несколько машин, которые я хочу синхронизировать с помощью флэш-накопителя USB. Это мой домашний ноутбук, мой дорожный ноутбук и рабочий стол в офисе. И у всех есть двойная установка windows7-kubuntu11.10. Я единственный пользователь, я не подключен ни к одной сети. Мое единственное беспокойство - наличие последних файлов на машине, которую я использую в любой момент времени. Я очень хорошо синхронизируюсь с флэш-накопителем USB каждый раз, когда я подключаюсь к машине, и каждый раз, когда я отключаюсь. Я редко забываю С моей установкой у меня есть целых 7 копий моих вещей, 3 на Linux, 3 на вдовы и 1 на USB (не говоря уже о резервных копиях, многие из них).
Я новичок в этом, поэтому на данный момент у меня нет системы, чтобы переходить между окнами и Linux. Я использовал syncback на windows и dirsyncpro на linux, но чтобы установить сцену, учтите, что я слишком толст, чтобы понять, как использовать rsync. Я учусь использовать Mercurial именно потому, что я понимаю, что он может работать на разных платформах.
Я установил Mercurial на своих Linux-машинах (еще не пробовал в Windows), у меня есть 1), настроил электронную почту в .hgrc и использовал один и тот же файл на всех машинах, 2) Я сделал $ hg init затем $ hg add и $ hg commit -m "first commit" во всех папках, которые я хочу отслеживать, 3) я сделал $ hg clone / home / docs / media / USBNAME / docs и проверил, что клон действительно действовал скопировать на флэш-накопитель USB, 4) Я проверил, что добавление файлов и выполнение $ hg push / media / USBNAME / docs копирует новый файл в каталог клонов на флэш-накопитель USB, но 5) я создал новый каталог с некоторыми новые файлы, и это не будет выдвинуто. Это почти то, где я застрял.
$hg addremove
$hg commit -m "added stuff"
$ hg push /media/USBNAME/docs
pushing to /media/USBNAME/docs
searching for changes
abort: push creates new remote head bb0e20a00aa3!
(you should pull and merge or use push -f to force)
В то время я чувствовал, что форсирование толчка могло быть немного, ну, в общем, сильным. Таким образом, я сделал тягу вместо этого. Но это удалило новые папки. Я смог вернуть их, выполнив откат $ hg, rehvert $ hg newfolder / newfile, но это было и страшно, и утомительно. И теперь я вернулся к исходной точке, как я могу вставить эти новые файлы и новый каталог на флэш-накопитель USB?
На общем и базовом уровне, вот мои 2 вопроса: как я могу обрабатывать добавления и удаления каталогов? Обычно я буду использовать файловый менеджер, такой как krusader, dolphin или gnome-commander, в linux для добавления и удаления файлов. У Mercurial нет проблем с просмотром новых файлов в новых папках и их фиксацией. Но я не могу заставить его толкнуть их на «клона». Эта проблема только для новой папки, насколько я могу судить. Добавление новых файлов в существующие папки работает как положено.
РЕДАКТИРОВАТЬ # 1
Следуя предложениям Мартина, я хотел бы сообщить и попросить несколько последующих советов о том, что я делаю.
$ cd /home/docs
$ hg status
$ hg addremove
$ hg commit -m "yet another test"
$ hg push /media/USBNAME/docs
pushing to /media/USBNAME/docs
searching for changes
abort: push creates new remote head 119134ce5d5d!
(you should pull and merge or use push -f to force)
$ hg pull /media/USBNAME/docs
pulling from /media/USBNAME/docs
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 0 changes to 0 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg merge
0 files updated, 0 files merged, 5 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Это то, что я только что сделал, и похоже на мое воспоминание о том, что произошло в первый раз. После рекомендуемого извлечения и объединения 5 файлов были удалены. Это те файлы, которые я хочу вставить на USB, а не удалить. Что я делаю неправильно? Спасибо за ваше терпение.
РЕДАКТИРОВАТЬ 2. перефокусировать мой вопрос, удалив отвлекающие побочные вопросы.
РЕШЕНИЕ. Теперь я понимаю, в чем проблема во втором наборе команд выше: отсутствует обновление hg в целевом хранилище. Это не очевидно для новичка, потому что, хотя $ hg pull выдает напоминание об обновлении, $ hg push - нет. Таким образом, для правильной отправки нужно нажать из исходного каталога и затем обновить из целевого каталога.
Вытягивание дает полезное напоминание для последующего обновления:
$ cd ~/dir-dest
$ hg pull ~/dir-source
pulling from ~/dir-source
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
$ hg update
Нажатие не дает напоминания об обновлении и включает в себя дополнительный шаг (необходимо перейти к месту назначения):
$ cd ~/dir-source
$ hg push ~/dir-dest
pushing to ~/dir-dest
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
$ cd ~/dir-dest
$ hg update
Было бы удобно иметь команду push + udate (pull + update уже существует).
Как только кто-то знает, в чем проблема, можно найти ссылки на него, но, насколько я могу судить, нет явного примера того, как использовать $ hg push в https://www.mercurial -scm.org / wiki /Учебное пособие .(напротив, $ hg pull хорошо задокументировано).И если я пропустил это, извинения.
Спасибо Мартину, который упомянул важность обновления $ hg в одном из своих нескольких комментариев ниже.Его комментарий побудил меня поэкспериментировать и выяснить, чего не хватало в последовательности шагов, за которыми я следовал.
Я полагаю, что моя неспособность подтолкнуть к месту назначения, что и вызвало мой первоначальный вопрос, является следствиемобновив хранилище Destinaton в нужное время.Вышеизложенное является моим пониманием и будет отредактировано, если неверно.