Mercurial хранилище на FTP - PullRequest
       5

Mercurial хранилище на FTP

3 голосов
/ 28 июня 2010

Интересно, можно ли создать и обслуживать клиентам репозиторий Mercurial в какой-то папке FTP с доступом к RW.Кто-то делал что-то подобное?Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 12 ноября 2012

Просто ради полноты, потому что у меня была та же проблема, и я чувствую, что есть другое, гораздо более простое решение:

Mercurial клонирование на локальных папках «просто работает», поэтому, если вы смонтировали ftp как локальную папку или диск, вы можете просто нажать / вытащить / клонировать его (и ваш репозиторий окажется на ftp). *

В Windows вы можете, например, используйте FTPUse или NetDrive , чтобы ваша папка FTP была подключена как локальный диск, первый бесплатный, но инструмент CLI, который удаляет виртуальные диски, если программа закрыта, последний имеет GUI, но бесплатен только для личного использования и не работает (пока) на Win8. У меня сейчас нет машины с Linux, но вы должны быть в состоянии достичь того же, используя ftpfs.

Как только вы это сделали (и ваш ftp-сервер теперь сопоставлен, например, с f :), вы можете просто использовать этот виртуальный диск (или любую подпапку) в качестве удаленной цели для ваших ртутных операций. Работает как шарм для меня.

2 голосов
/ 28 июня 2010

Все возможно.Но это было бы сложно.

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

Если у вас есть механизм совместного использования only , то вы, вероятно, могли бы что-то решить, используя Mercurial bundles..Процедура будет выглядеть примерно так:

  1. Отправьте свои изменения в локальный репозиторий
  2. Создайте пакет, используя hg bundle --all my-bundle.hg
  3. FTP my-bundle.hg длясервер

Другие пользователи хранилища могут затем использовать FTP для извлечения файла my-bundle.hg на свой локальный компьютер, перейти к своей локальной копии хранилища, а затем hg pull my-bundle.hg, чтобы извлечь любойревизии, которые находятся в комплекте, но не в локальном репозитории.Когда они хотят поделиться своими изменениями, они создают новый пакет, как указано выше, и отправляют его обратно на сервер.Опция --all помещает все наборов изменений в файл комплекта - вы можете быть умнее и экспортировать только «недавние» изменения, но это становится немного сложнее и рискует потерять наборы изменений: использование --allявляется жестоким, но отказоустойчивым.

Очевидно, что здесь есть достаточно места для путаницы, условий гонки (могут помочь имена файлов с временными метками) и удаления волос, и ваши пользователи, несомненно, оценят некоторые сценарии длясделать это проще, но если у вас есть только FTP-сервер, у вас не так много вариантов.

Удачи.

0 голосов
/ 28 июня 2010

Этот вопрос о SuperUser может быть интересным. Основная идея, кажется, развивается вокруг запуска фонового процесса, который синхронизирует локальную папку с удаленной папкой ftp. Что может вам пригодиться.

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

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