Отслеживание восходящего svn изменяется с мерзавцем-svn и GitHub?

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

Я использовал мерзавца-svn для преобразования SVN repo в мерзавца на GitHub:

$ git svn clone -s  http://svn.osqa.net/svnroot/osqa/ osqa
$ cd osqa
$ git remote add origin git@github.com:turian/osqa.git
$ git push origin master

Я затем делал несколько изменений в своем мерзавце repo, фиксировавшими, и продвинул к GitHub.

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

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

$ git svn clone -s  http://svn.osqa.net/svnroot/osqa/ osqa
$ cd osqa
$ git remote add origin git@github.com:turian/osqa.git
$ git push origin master
To git@github.com:turian/osqa.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com: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 git@github.com:turian/osqa
 * [new branch]      master     -> origin/master
From git@github.com: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  ').
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

13
задан Bert Huijben 9 May 2010 в 23:52
поделиться

1 ответ

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

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

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

5
ответ дан 2 December 2019 в 02:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: