Подтвердить что ты не робот

DVCS с центральным хранилищем Windows

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

Какие системы DVCS могут размещать свой центральный репозиторий в Windows при предоставлении.

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

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

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

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

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

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

Обновление

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

4b9b3361

Ответ 1

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 поддерживают оба. Вы можете проконсультироваться направления CGI в Mercurial Redbook для шагов, специфичных для Mercurial, и Руководство по настройке приложений CGI в IIS 6 для справки на стороне IIS.

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

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

allow_push = benjamin, ted, the_cow

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

Ответ 2

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

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

Mercurial

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

В Интернете script я загрузил Mercurial source, в котором содержался hgwebdir.cgi, который был перемещен и переименован в d:\dev\Mercurial\webroot\hgwebdir.py. Пошаговая статья содержит хорошие инструкции по изменению hgwebdir script для 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 script - это Python script, поэтому он требует Python. Кажется довольно придирчивым, на котором его выполняет версия Python. Одна из статей упомянула, что для ее запуска требуется та же самая версия, которая использовалась для сборки Mercurial. В итоге я начал работать над Python 2.5 x86 после проверки Python 2.6 x64, Python 2.4, Python 2.5 x64.

IIS

Две вещи, которые я пропустил и которые пришлось установить, - это поддержка CGI и базовая аутентификация. Оба они были установлены с помощью панели управления, программ и функций. После завершения установки я создал виртуальный каталог (который позже был изменен на приложение) в 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 script
    • Загрузите правильную версию Python для архитектуры x86, поскольку script использует некоторые библиотеки x86. Правильная версия Python зависит от версии Mercurial. Для 1.2.1 это был Python 2.5 x86.
    • В качестве альтернативы вы можете попробовать создать Mercurial из источников с любой версией Python, но в моем случае это не удалось при создании расширений.
  • Как установить CGI в IIS
    • Сначала убедитесь, что CGI установлен в IIS. Это не предполагалось, что это верно в инструкциях IIS, опубликованных в Benjamin.
    • Создайте новое сопоставление модулей для *.py в сопоставлениях диспетчера IIS. Правильный модуль CgiModule, а исполняемый файл - ваш исполняемый файл Python +% s
  • Как разрешить CGI script писать в репозиторий
    • Убедитесь, что script имеет все необходимое. Мне пришлось переместить library\mercurial\hgweb\hgwebdir_mod.pyc в другое место.
    • Удостоверьтесь, что script имеет разрешения везде, где он хочет. Я решил это, создав новый пул приложений для CGI script, который использовал учетную запись локальной системы, преобразовал виртуальный каталог в приложение в IIS и выбрал новый пул приложений.

Ответ 3

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

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

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

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

2. Установите MinGW.
Версия Minimalist GNU для Windows я была MinGW 5.1.4

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

3. Измените свой путь.

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

  • Добавить 'C:\Mercurial\Python26; C:\Mercurial\MinGW\bin' в путь (порядок вопросов.)

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".

  • Добавить 'C:\Mercurial\Python26\Scripts, C:\Mercurial\Python26; C:\Mercurial\MinGW\bin' в путь (порядок вопросов.)

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

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

  • Создать файл '' C:\Documents and 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', новое value = '/Mercurial/hgwebdir.cgi'

11. Создать Mercurial репозиторий

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

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

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

[web]
allow_push = *
push_ssl = false

Литература:

Установка Windows Mercury для Microsoft Office
HG Book
Шаг за шагом
Публикация Mercurial Repositories

Ответ 5

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

  • Поддержка распределенного развития
  • Легко запускайте серверы Windows
  • И отличный графический интерфейс

Вы точно описываете Пластиковый SCM

Ответ 6

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

Ответ 7

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