Доброго времени суток.
Недавно столкнулся с необходимостью настроить новый проект для использования Git в качестве системы контроля версий. Задача была следующей, необходимо иметь дополнительный RSA ключ к основному и обеспечить работу с двумя разными удаленными репозиториями на одной машине, так же нужно учесть что до того как возникла текущая задача исходники проекта хостились в Subersion и нужно так же иметь и его поддрежку для тех, кто еще не перешел на Git.
Опять же как обычно Google рулит 😉 Погуглив, нашел статейку, которая очень помогла. Далее привожу последовательность моих действий.
Предполагается, что у вас уже имеется MsysGit и уже имеется небольшой опыт испоьзования Git.
Первоначально нужно создать RSA ключ для нового Git репозитория это делается следующим образом.
ssh-keygen -t rsa -C "ваш комментарий тут" |
И на этом шаге нужно указать другой путь для ключа, например ~/.ssh/project2_id_rsa.
Затем делаем импорт исходников из Subersion в локальный Git репозиторий.
git svn clone http://svn.repo.hostname/trunk local_git_repo |
Процесс клона должен пройти, пока он будет вытягивать все исходники мы можем приступить к настройке SSH. Нужно открыть файл в домащней директории пользователя, для Linux это ~/.ssh/config, для Windows – C:\Doc..and Settings\username\.ssh\config. Дописываем в этот файл следующие строчки
Host project-git-repo-dev Hostname=remote-git-repo-host.com IdentityFile=~/.ssh/project2_id_rsa |
Далее, после того как исходники импортятся в локальный Git репозиторий, нужно открыть файл в директории local_git_repo/.git/config и исправить имя хости удаленного Git репозитория на указанный в SSH конфиге.
[remote "origin"] #url = ssh://remote-git-repo-host.com/repo.git url = ssh://project-git-repo-dev/repo.git fetch = +refs/heads/*:refs/remotes/origin/* |
Теперь у вас есть ключ для новогоGit репозитория, мирно существующий со старым.
Далее при изменениях в Subersion репозитории нужно будет выполнить следующие команды.
git svn rebase git push |
При изменениях в локальном Git
git add . git commit -m "Some nice functionality was added" git push git svn rebase git push git svn dcommit #эта комманда создать ревизию для каждого комита в Git |
Также иногда нужно выполнять следующую процедуру, если у вас есть локальные изменения, которые вы еще не хотите комитить, но хочете добавить в Subersion репозиторий ряд последних локальных комитов.
git stash git svn dcommit git stash apply |
На этом все, успехов.