Страницы

Поиск по вопросам

суббота, 7 декабря 2019 г.

Переезд с Subversion на GIT под Windows

#git #git_svn


Анамнез: 
на протяжении более 5 лет наша команда разработчиков использует SVN возникла идея
переехать на GIT, так как часто возникает нужда работать отдельно от основной команды
разработчиков и увидели спасение в "локальных комитах". Самая большая беда в том, что
для переезда на GIT мы можем использовать только свой собственный сервер под управлением
MS W Server 2008 R2 Foundation (репозиторий SVN находится на корпоративном сервере
под линухом) по ряду причин перевести форточный сервер под пингвинов нельзя (функционал
винды на нем необходим).

Задачи: 


скопировать рабочий репозиторий с svnserver (сервер репозитория Subversion под управлением
Debian) в репозиторий GIT на gitserver (под управлением Win Server 2008).
обеспечить команде разработчиков доступ к репозиторию GIT (который есть клон репозитория
SVN).


Предпринятые попытки:
С задачей за номером 1 я справился тут все оказалось просто:


в git bash набираем:

~$ git svn clone svn://:


(хотя может чуточку не так, мог и подзабыть уже 2 месяца мучаюсь) и вводим логин
пароль для прописанного в svn-репозитории пользователя.
после чего с помощью git svn fetch и git svn rebase забираю новые комиты из SVN-а.


А вот задача номер 2 ох бабоньки лягла на плечи мои и не дает мне горемычному покоя
(простите за вольность).
В общем поднял я на виндовом сервере OpenSSH открыл 22 порт в брандмауэре а дальше
понять могу уже тонну манов выкурил что скоро рак мозга заработаю (а может и уже).
При попытке с удаленной машины клонировать GIT репозиторй выдается окно: от TortoiseGIT
PLink (это SSH клиент тортойсовский) "git@gitserver password:" c инпутбаром для ввода
пароля (только пароль, логин не запрашивает) какие бы пароли не подсовывал не пускает
клонировать все одно твердит: "Access Denied". Притом поведение всегда одно и тоже,
что на машине для которой сгенерирована пара RSA-ключей и (далее судя по всему идет
мое кривое понимание работы SSH сервера) текст из файла .pub добавлен в файл ssh_host_rsa_key.pub
что для машины на которой пара ключей даже не генерировалась, то есть аутентификация
на SSH-сервере не проходит, сколько не рылся в манах никак не могу найти внятной информации
о том каким путем в принципе происходит аутентификация в репозитории GIT.

В общем подмогните, тону, а в какую сторону грести не понимаю.
    


Ответы

Ответ 1



Решал недавно похожую задачу: имеем Windows Server 2008 x64, необходимо переехать с SVN (на этом же сервере) на GIT. Решил следующим образом: Поскольку SVN далее не планировалось поддерживать, то использовал утилиту svn2git. Сперва устанавливаем Ruby, в процессе установки для простоты отмечаем пункт "Add Ruby executables to your PATH". Запускаем командную строку с правами администратора и выполняем gem install svn2git. Должно всё успешно установиться в каталог установки Ruby. Далее используем svn2git с нужными параметрами (их список и документация доступны на GitHub в описании проекта). Для корректного переноса авторов коммитов необходимо создать простой текстовый файл (обязательно в кодировке UTF-8 without BOM) в формате: pavel = Pavel Sidorov sergey = Sergey Ivanov И указать путь к этому файлу в аргументе --authors. По завершении выполнения утилиты получаем локальный GIT-репозиторий. Следующий шаг - предоставить удаленный доступ к этому репозиторию. Для этого я использовал Bonobo Git Server, процесс установки подробно описан со скриншотами на странице install. Предварительно обязательно проверить требования и установить недостающие компоненты. После установки создаем удалённый репозиторий и выкладываем наш локальный конвертированный репозиторий: git remote add origin https://172.1.1.1:8094/MyProject.git git push origin master

Ответ 2



Огромное спасибо Pavel Parshin, воспользовался вашим советом, теперь все подготовлено для переезда: BonoboGitServer устанавливается в танце "2 притопа 3 прихлопа" бубен нужен разве что только для антуража на сайте разработчика подробное описание всех па. В общем читайте пост Павла выше, там даны все ссылки. Вот только не стал я пользоваться утилитой svn2git, не было задачи сопоставления имен старых svn-овских комитеров с новыми (они и так совпадают, да и персона по логину идентифицируется однозначно) потому я просто клонировал через гит репозиторий subversion: ~$ git svn clone svn://[servername]/[repositoryname] далее заходим в админку Bonobo и на вкладке "Репозитории" находим нашего мигранта, добавляем ему описание и раздаем права доступа. Далее ждем часа Х, выполняем на сервере GIT в директории репозитория мигранта: ~$ git svn fetch ~$ git svn rebase Делаем: РАЗ - Закрываем доступ к репозиторию svn. ДВА - В репозитории мигранте на сервере GIT правим корневой .git/config меняя значение bare с false на true. ТРИ - Ну и все, как завещал Афоня: "Можете пользоваться!"©

Ответ 3



Самое простое, и наиболее типично используемое в небольших локальных сетях - открываете общий доступ к папке, добавляете права на чтение и/или запись нужным пользователям - собственно и всё. Без всяких неродных для Windows ssh, bash'а и прочих. Ещё есть несколько вариантов, доступных при включенной роли веб-сервера(IIS): Предоставьте пользователям доступ через через стандартный git-http-backend. Разверните какой-нибудь веб-интерфейс для GIT, например Bonobo Git Server или GitWeb. Установите полноценную систему управления проектами, поддерживающую хостинг GIT-репозиториев - Microsoft Team Foundation Server (есть бесплатная версия для небольших команд), TeamCity, либо GitLab. А вообще, можете не мучатся с установкой/настройкой чего-то у себя, и просто разместить репозиторий на GitHub(требуют небольшую плату за закрытые репозитории) либо BitBucket(закрытые репозитории бесплатны для команд до 5 человек).

Комментариев нет:

Отправить комментарий