#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 Sidorovsergey = 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 человек).
Комментариев нет:
Отправить комментарий