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

Отслеживание изменений svn вверх по течению с помощью git -svn и github?

Как отслеживать изменения SVN вверх по потоку с помощью git -svn и github?

Я использовал git -svn для преобразования репо SVN в git в github:

$ git svn clone -s  http://svn.osqa.net/svnroot/osqa/ osqa
$ cd osqa
$ git remote add origin [email protected]:turian/osqa.git
$ git push origin master

Затем я сделал несколько изменений в моем репозитории git, зафиксировал и нажал на github.

Теперь я нахожусь на новой машине. Я хочу принять изменения SVN вверх, объединить их с моим реестром github и направить их на мой репозиторий github. В этой документации говорится: "Если вы когда-нибудь потеряете свою локальную копию, просто запустите импорт снова с теми же настройками, и вы получите еще один рабочий каталог со всеми необходимый SVN metainfo."

Итак, я сделал следующее. Но ни одна из команд не работает по желанию. Как отслеживать изменения SVN вверх по потоку с помощью git -svn и github? Что я делаю неправильно?

$ git svn clone -s  http://svn.osqa.net/svnroot/osqa/ osqa
$ cd osqa
$ git remote add origin [email protected]:turian/osqa.git
$ git push origin master
To [email protected]:turian/osqa.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to '[email protected]:turian/osqa.git'
$ git pull
remote: Counting objects: 21, done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 17 (delta 7), reused 9 (delta 0)
Unpacking objects: 100% (17/17), done.
From [email protected]:turian/osqa
 * [new branch]      master     -> origin/master
From [email protected]:turian/osqa
 * [new tag]         master     -> master
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.
...
$ /usr//lib/git-core/git-svn rebase
warning: refname 'master' is ambiguous.
First, rewinding head to replay your work on top of it...
Applying: Added forum/management/commands/dumpsettings.py
error: Ref refs/heads/master is at 6acd747f95aef6d9bce37f86798a32c14e04b82e but expected a7109d94d813b20c230a029ecd67801e6067a452
fatal: Cannot lock the ref 'refs/heads/master'.
Could not move back to refs/heads/master
rebase refs/remotes/trunk: command returned error: 1
4b9b3361

Ответ 1

Похоже, что, за исключением вашего rebase, все происходило так, как ожидалось, но с гораздо большим количеством слов, которые вы могли бы ожидать. Здесь я думаю, что я бы сделал, чтобы создать/интегрировать бит на новую машину:

  • Клонировать репозиторий Svn. В идеале я бы хотел начать с git repo, потому что он ваш и он в известном состоянии, но я не знаю, как изначально вытащить контент из Svn, чем клонировать его. Я хотел бы добавить --prefix=svn/ при клонировании, чтобы все мои удаленные ветки из Svn были аннотированы как таковые.
  • Добавьте свое происхождение (точно так же, как вы это сделали).
  • Создайте локальную ветку для работы. git co -b local-branch svn/branchname. Теперь у вас есть хорошая локальная площадка для игры с вещами.
  • Убедитесь, что вы находитесь в той локальной ветки, которую вы только что создали (вы должны быть).
  • Вытащить из Гитуба. Вы сделали это правильно, но неоднозначно. Чтобы устранить двусмысленность, будьте явными: git pull origin master (оттяните от начала до главной ветки).
  • Rebase от Svn, чтобы синхронизировать все. git svn rebase.

Я не пробовал это, но это довольно типичный рабочий процесс и ошибки, которые вы получаете, похоже, не связаны с вашим сервисом двух пультов (Svn и Github). Они кажутся более универсальными и связаны с вашим рабочим процессом и как вы вызываете команды.