2009-04-28 2 views
24

В настоящее время мы используем VSS для управления версиями. Немногие из наших разработчиков заинтересованы в распределенной модели (и хотите избавиться от VSS). Наша сеть полна машин Windows, и хотя наш ИТ-отдел имеет опыт работы с машинами Linux, они предпочли бы этого не делать.DVCS с центральным хранилищем Windows

Что DVCS система может разместить свое центральное хранилище на Windows, обеспечивая при этом ..

  1. Нажмите доступ к хранилищу.
  2. Базовая аутентификация. В основном просто способ разрешить или запретить доступ ко всему хранилищу. Нет необходимости в мелкозернистом доступе.
  3. Серверный процесс, поэтому пользователям не нужно писать право на репозиторий, уменьшая риск случайного возиться с ним.

На стороне клиента такой GUI, как Черепаха, будет более или менее требовательным (извините, Windows shell sucks.: |). Простота установки была бы огромным плюсом, так как наш ИТ-отдел уже довольно низок на ресурсах. И использование учетных данных Windows для аутентификации было бы преимуществом, но не требованием, если клиент может хранить учетные данные.

У меня был (действительно) быстрый взгляд на Git, Mercurial и Bazaar.

  • Git казалось использовать SSH или простой WebDAV для доступа к хранилищу, требуя разрешения на запись для пользователей.
  • Mercurial имел встроенный сервер http, но это, казалось, было только для целей тяги. Обновление: Mercurial поддерживает push также.
  • Bazaar Предполагается использовать sftp для доступа к репозиторию, снова требуя права на запись для пользователей.

Есть ли процессы оконных окон для любых систем DVCS и кому-нибудь удалось установить их на Windows-земле?

И приносим извинения, если это дублирующий вопрос. Я не мог найти его.

Update

Got Mercurial работает для целей кнопочных! Подробный список того, что требуется, можно найти в качестве ответа ниже.

+0

Вы можете теперь обновите вопрос, что вы видели, как «hg serve» можно заставить принимать нажатия. –

+0

Awesome. Спасибо за подробные инструкции! – mmacaulay

ответ

17

Mercurial почти наверняка ваш самый простой вариант в Windows.

Если вам не нужна аутентификация, вы можете тривиально разрешить hg serve, чтобы разрешить push.Чтобы сделать это, вам просто нужно добавить следующее в .hg/hgrc файла в хранилище, который вы хотите, чтобы служить:

[web] 
allow_push = * 
push_ssl = false 

Первая строка говорит, что кто-нибудь может подтолкнуть этот репозиторий. Второй говорит Mercurial разрешить pushing без SSL, так как hg serve в настоящее время не поддерживает HTTPS. На данный момент пользователи могут нажать на ваш репозиторий, не имея учетной записи в любом месте. Если вы просто небольшой магазин, это, вероятно, отлично - тем более, что вы можете использовать способность Mercurial подписывать набор изменений, чтобы гарантировать гораздо более высокий уровень проверяемости, чем в любом случае обеспечит HTTP Basic.

Для более крупного магазина вы, должно быть, совершенно правы, желая хотя бы простого барьера для совершения. Для этого вам нужно сделать два изменения. Во-первых, вам нужно поставить Mercurial за веб-сервер с поддержкой обратного прокси или поддержкой CGI. К счастью, последние версии IIS поддерживают оба. Вы можете проконсультироваться с the CGI directions in the Mercurial Redbook для конкретных меркуриальных шагов и Microsoft's guide to setting up CGI applications in IIS 6 для помощи со стороны IIS.

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

Наконец, вы захотите изменить линию allow_push для поддержки только определенных пользователей, указав список имен пользователей с разделителями-запятыми. Например:

allow_push = benjamin, ted, the_cow 

Всё. Mercurial теперь разрешит пользователям пользователей, которые могут пройти аутентификацию через HTTP-аутентификацию по стандарту HTTP, и позволить вытащить из всех остальных.

+0

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

+0

Я думаю, что я почти там. Скрипт CGI выполняется в оболочке, но ошибки IIS на нем. –

+0

Получил это! –

2

Для команды, сделавшей первый шаг от VSS, я предложил бы использовать SubVersion для управления источником и либо TortoiseSVN, либо VisualSVN для клиента.

Но если команда приняла решение переключиться на DVCS, то я бы предложил Mercurial из-за этого better support for HTTP and windows on the client via TortoiseHg.

+0

Я считаю, что большинство наших разработчиков знакомы с источником управления вне VSS, таким как Subversion. Одним из самых больших требований были локальные коммиты, которые Subversion не поддерживает. Основываясь на других ответах DVCS здесь на SO, я пришел к выводу, что Mercurial, вероятно, будет лучшим выбором, но я не смог найти способ размещения центрального хранилища Windows с быстрым поиском. Спасибо за мнение, хотя! –

12

После того, как Бенджамин указал на HTTP-сервисы CGI-скриптов, я решил попробовать их и смог получить репозиторий, размещенный через HTTP. The Redbook, с которым связался Беньямин, так же, как и две статьи в Mercurial wiki. Один, который описывает Mercurial publishing в целом, а другой содержит инструкции step by step для настройки сценария CGI HgWebDir.

Эти инструкции не были полностью надежными, хотя мне пришлось немного совать. Скорее всего, поскольку я запускаю 64-битную Vista. Ниже приведены инструкции о том, что я сделал. Теперь, когда я сделал это, как только я, вероятно, сделаю что-то в другом порядке, не учитывайте эти пошаговые инструкции.

Mercurial

Сначала я приобрел Mercurial бинарник http://mercurial.berkwood.com/ который был установлен в d:\dev\Mercurial. Я создал репозиторий для тестирования под d:\dev\testRepo репозиторием, используя hg init. В файле d:\dev\Mercurial\library.zip содержатся файлы библиотеки Mercurial, необходимые для сценария CGI, поэтому они были извлечены до d:\dev\Mercurial\library. Что-то сначала смутило меня в том, что когда я открыл файл zip, я получил сообщение об ошибке и не увидел никакого содержимого. Просто извлечение файла в директорию работало.

Для веб-скрипта я загрузил Mercurial source, в котором содержался hgwebdir.cgi, который был перемещен и переименован в d:\dev\Mercurial\webroot\hgwebdir.py. Пошаговая статья содержит хорошие инструкции по модификации скрипта hgwebdir для Windows. Они также содержат инструкции по hgweb.config в моем случае в конечном итоге глядя, как это:

[paths] 
/hg/hgwebdir.py/test = D:\dev\Mercurial\testRepo 

Также хранилище хотел следующий конфиг, чтобы я мог нажать там без SSL.Примечание. Я использую Basic Authentication для аутентификации пользователей в настоящее время. Я должен был создать конфиг в D:\dev\Mercurial\testRepo\.hg\hgrc и добавьте следующие строки:

[web] 
allow_push = * 
push_ssl = false 

Python

Сценарий CGI является сценарий Python поэтому он требует Python. Это кажется довольно придирчивым, на котором его выполняет версия Python. Одна из статей упомянула, что для ее запуска требуется та же самая версия, которая использовалась для сборки Mercurial. В итоге я начал работать над Python 2.5 x86 после проверки Python 2.6 x64, Python 2.4, Python 2.5 x64.

IIS

Две вещи, которые я пропустил, и должен был установить, были поддержка CGI и Basic Authentication. Оба они были установлены с помощью панели управления, программ и функций. После завершения установки я создал виртуальный каталог (который позже был изменен на приложение) в IIS, указывающий на D:\dev\Mercurial\webroot. Для виртуального каталога требовался обработчик CGI для файлов * .py, которые можно было бы добавить из сопоставлений обработчиков. Исполняемый файл был D:\dev\SDKs\Python25_x86\Python.exe %s. Как только у IIS были права доступа к каталогу webroot, я мог бы перейти к http://localhost/hg/hgwebdir.py/test и посмотреть репозиторий.

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

После часа отладки я закончил копирование всего дерева D:\dev\Mercurial\library\mercurial под webroot, чтобы Python смог найти D:\dev\Mercurial\webroot\mercurial\hgweb\hgwebdir_mod.pyc. После этого Wireshark сообщал об ошибках Access Denied в трассировке стека. Не знаю, какова настоящая причина этого, но изменение виртуального каталога в приложении в IIS и перемещение его поверх пула приложений, который выполнялся с использованием учетной записи локальной системы, удаленные ошибки доступа были удалены.

Также в какой-то момент я дал HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters ключ реестра больше разрешений, чтобы IIS мог получить к нему доступ. Сомнительно, что он требует их после использования учетной записи локальной системы.

Как только это было сделано, толкание материала в хранилище с использованием hg push http://localhost/hg/hgwebdir.cgi/test работало!

Проблемы и решения

  • Где найти файлы библиотеки.
    • Они были в библиотеке.dll в папке установки Mercurial. Мне просто нужно было их извлечь, даже если моя программа распаковки отказалась просмотреть мне его содержимое.
  • Как получить сценарий Python для запуска
    • Скачать правильную версию Python для архитектуры x86, поскольку сценарий использует некоторые библиотеки x86. Правильная версия Python зависит от версии Mercurial. Для 1.2.1 это был Python 2.5 x86.
    • В качестве альтернативы вы можете попробовать создать Mercurial из источников с любой версией Python, но в моем случае это не удалось при создании расширений.
  • Как установить CGI в IIS
    • Сначала убедитесь, что CGI установлен в IIS. Это не предполагалось, что это верно в инструкциях IIS, опубликованных Беньямином.
    • Создайте новое сопоставление модулей для * .py в сопоставлениях диспетчера IIS. Правильный Модуль CgiModule и исполняемый ваш Python исполняемый +% s
  • Как разрешить сценарий CGI для записи в хранилище
    • Убедитесь, что скрипт имеет все, что требуется. Мне пришлось переместить library\mercurial\hgweb\hgwebdir_mod.pyc в другое место.
    • Убедитесь, что сценарий имеет разрешения на все, что захочет. Я решил это, создав новый пул приложений для скрипта CGI, который использовал учетную запись Local System, конвертировал виртуальный каталог в приложение в IIS и выбирал новый пул приложений.
+1

Большое спасибо за то, что вы проделали именно то, что вам нужно было сделать! Я объединю ваш совет в книгу, передав его автору для включения. –

0

Если вы ищете:

  1. поддержка распределенных серверов разработки
  2. Запустите Windows бесшовно
  3. и большой графический интерфейс

Вы точно описывающего Plastic SCM

7

Прочитав ответ Микко, который почти работал для меня, я придумал свои собственные заметки для установки. Моя настройка была создана как «не защищенный и открытый» репозиторий, который могут использовать члены моей команды на сервере Windows 2008 Server.

1. Установите Python.

Версия Python, которую я использовал, была Python 2.6.2, и я использовал установщик MSI для Windows x86.

  • Устанавливать для всех пользователей.
  • Установить в C: \ Mercurial \ Python
  • Использовать параметры функции по умолчанию.

2. Установите MinGW.
Версия Минималистский GNU для Windows, я использовал MinGW 5.1.4

  • Установите MinGW-5.1.4.exe.
  • Выберите вариант «Загрузка и установка».
  • Выберите вариант «Текущий пакет» для установки.
  • Для компонентов для установки Выберите параметр «Минимальный».
  • Установите в C: \ Mercurial \ MinGW

3. Измените путь.

На этом этапе необходимо добавить места в пути к окружающей среде.

  • Add 'C: \ Mercurial \ Python26; C: \ Mercurial \ MinGW \ бен' (. Order вопросам) на пути

4. Установите Mercurial.

Версия mercurial, которую я использовал, была последней версией в стабильной ветке, и я не использовал двоичные файлы, но использовал исходный код. Я хотел скомпилировать mercurial, чтобы он работал с любой версией Python, которую я установил, поэтому мне не пришлось беспокоиться о проблемах совместимости, которые, как мне показалось, были самой большой проблемой для других методов установки. Легкий способ получить исходный код - загрузить файл «zip». Mercurial Stable Release

  • Извлечение Zip файлов в C: \ Mercurial \ Source.
  • Создайте источник в командной строке.
 
python setup.py build --force -c mingw32 
python setup.py install --force --skip-build

5. Измените путь.

Вам необходимо вставить в свой путь к окружающей среде другое место для команды «hg».

  • Add 'C: \ Mercurial \ Python26 \ Scripts; C: \ Mercurial \ Python26; C: \ Mercurial \ MinGW \ бин' на путь (. Заказать вопросы)

6. Создайте свой файл конфигурации.

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

  • Создать файл '"C: \ Documents и Settings {имя пользователя} .hgrc"'
[ui] 
editor = Notepad 
username = your_name

6. Проверьте свои установки.

Откройте новое окно команд и проверьте с помощью «hg debuginstall» для подтверждения. Вы должны увидеть что-то вроде следующего.

 
Checking encoding (cp1252)... 
Checking extensions... 
Checking templates... 
Checking patch... 
Checking commit editor... 
Checking username... 
No problems detected 

7. Настройка веб-каталога.

  • Создать каталог 'C: \ Mercurial \ Web'
  • Скопируйте hgwebdir.cgi файл из 'C: \ Mercurial \ Source' до 'C: \ Mercurial \ Web '

8. Настройте IIS7 для централизованного хранилища.

Я использовал DefaultAppPool, который использует .Net 2.0, Pipeline = Integrated, Identity = ApplicationPoolIdentity.

  • Убедитесь, что функции CGI доступны в IIS7.
  • Панель управления/Программы/Возможности Windows/Возможности IIS/разработки приложений/CGI
  • Добавить приложение в IIS на веб-сайт, который вы хотите.
  • Alias ​​= Mercurial - Physical Path = C: \ Mercurial \ Web
  • В приложении выберите HTTP-модули и добавьте новое сопоставление модулей.
    • Request Path = *. Cgi, Module = CgiModule, Executable = C: \ Mercurial \ Python26 \ python.exe% s, Name = Mercurial.
    • Когда предлагается добавить запись в список ограничений ISAPI и CGI, скажите «да».

9. Тестирование веб-установки.

Теперь вы можете просмотреть http://localhost/Mercurial/hgwebdir.cgi и просмотреть и удалить список репозиториев.

10. Настройка IIS7 для дружественных URL

Я не люблю, когда недружественные URL и этот шаг позволяет переназначить URL к чему-то более дружественным. Установите расширение URL Rewrite Moduel 1.1 для IIS.

  • О приложении Mercurial IIS в приложениях диспетчера IIS Просмотреть выбранный URL Переписать компонент и установить новое правило.
  • Выберите «Добавить правила», затем «Правило шаблона с переписывающей картой». Правило Действие = Переписать, Указать переписать карту = Mercurial
  • Добавить картографическую запись. OriginalValue = '/ Mercurial/Repo', New Value = '/ Mercurial/hgwebdir.cgi'

11. Создание Mercurial Repository

Теперь вы можете создать тестовый репозиторий.

  • Создайте каталог C: \ Mercurial \ Repository и убедитесь, что учетная запись IUSR имеет права на запись в каталог. (Если на учетной записи домена больше похоже на IUSR_ {имя_компьютера}.
  • Создайте файл C: \ Mercurial \ Web \ hgweb.config, чтобы перечислить репозитории.
[paths] 
/= C:\Mercurial\Repository\**
  • Добавить директорию C: \ Mercurial \ Repository \ Test и инициализировать репозиторий с 'рт.ст. инициализации'

** Если вы хотите сейчас, чтобы быть в состоянии выдвинуть без SSL создайте в .hg-каталоге репозитория hgrc-файл следующие строки.

[web] 
allow_push = * 
push_ssl = false

Ссылки:

Mercurial Wiki Windows Install
HG Book
Step by Step
Publishing Mercurial Repositories

+1

Отличный гид! Я предлагаю использовать «hg debuginstall» для проверки установки. И книгу Брайана обычно называют «Книгой HG» :-) –

+0

Ницца! Мне любопытно, для чего вам нужен MinGW? Я думаю, что у меня это уже установлено на всех моих компьютерах, но не думал, что Mercurial или Python будут использовать это. Также я думаю, что я тоже перейду в открытый репозиторий. Я действительно не приступил к работе с Mercurial после проблем с аутентификацией пользователя. Я не могу использовать встроенную проверку подлинности Windows через Mercurial cient и с базовой проверкой. Mercurial не помнит учетные данные в том, как работает Subversion. –

+0

Я использовал MinGW для компиляции. Вы можете выбрать другие компиляторы, на которые я верю, и указать его в строке компиляции. python setup.py build --force -c mingw32 – degnome

0

Оправдание мой necroposting и бесстыдная самореклама, но я только что выпустила альфа-версию HgLab, который является Mercurial Server для Windows с полным поддержка push-push и интеграция с Active Directory.

+0

IIS ** и ** SQL-сервер ** и ** Windows Server 2003 или выше в списке reqs являются излишними из моего POV –

+0

@LazyBadger Почему это? –

+0

Просто строго личное мнение - я предпочитаю решения с минимальным количеством * любых * зависимостей, тяжелые отпечатки - Стоп-знак (для меня) –

0

SCM-агностик (до некоторой степени) Windows-решения с Repository-frontent и управления сегодня может быть SCM-Manager (Git, Mercurial, SVN репо из коробки с одним требованием JVM)

Смежные вопросы