создайте новое ответвление svn с мерзавцем-svn

При работе с мерзавцем-svn и 'типичным' svn repo / соединительная линия,/branches/...,/tags/... Как я продвигаю локальное ответвление к новому ответвлению в ответвлениях/?

5
задан jsharpe 29 March 2010 в 14:16
поделиться

1 ответ

Предположим, у нас есть скелет репозитория Subversion с пустыми trunk/, branches/ и tags/:

/tmp$ git svn clone -s file:///tmp/svn-repo/ git-svn-repo
Initialized empty Git repository in /tmp/git-svn-repo/.git/
r1 = 80bdcfc0cf248b74b914a1b5f99ab89fb4e31b6c (refs/remotes/trunk)
Checked out HEAD:
  file:///tmp/svn-repo/trunk r1

/tmp$ cd git-svn-repo/

/tmp/git-svn-repo$ git svn branch my-branch
Copying file:///tmp/svn-repo/trunk at r1 to file:///tmp/svn-repo/branches/my-branch...
Found possible branch point: file:///tmp/svn-repo/trunk => file:///tmp/svn-repo/branches/my-branch, 1
Found branch parent: (refs/remotes/my-branch) 80bdcfc0cf248b74b914a1b5f99ab89fb4e31b6c
Following parent with do_switch
Successfully followed parent
r2 = 56150bbd9d3aec94972ff46d030e30ec726595ab (refs/remotes/my-branch)

Приведенное ниже объяснение будет переключаться между двумя представлениями одного и того же репозитория, рабочей копией subversion всего репозитория (а не только trunk) и клоном git-svn. Для ясности, префикс каждой командной строки будет указывать текущий каталог.

На стороне svn вы увидите

/tmp/svn-repo-wc$ svn up
A    branches/my-branch
Updated to revision 2.

Вы также увидите новую ветвь на стороне git:

/tmp/git-svn-repo$ git branch -r
  my-branch
  trunk

Чтобы зафиксировать вновь созданную ветвь, сначала переключитесь на нее:

/tmp/git-svn-repo$ git reset --hard remotes/my-branch
HEAD is now at 2c9bef2 Create branch my-branch

Далее мы создадим фиктивную фиксацию git

/tmp/git-svn-repo$ touch on-my-branch
/tmp/git-svn-repo$ git add on-my-branch
/tmp/git-svn-repo$ git commit -m 'First commit to my-branch'
[master b94a0eb] First commit to my-branch
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 on-my-branch

и, наконец, отправим ее в Subversion:

/tmp/git-svn-repo$ git svn dcommit
Committing to file:///tmp/svn-repo/branches/my-branch ...
    A   on-my-branch
Committed r3
    A   on-my-branch
r3 = d3c5ba3e03e5cdee96f470ff4c9898eb7c523ed8 (refs/remotes/my-branch)
No changes between current HEAD and refs/remotes/my-branch
Resetting to the latest refs/remotes/my-branch

Рабочая копия Subversion дает нам подтверждение:

/tmp/svn-repo-wc$ svn up
A    branches/my-branch/on-my-branch
Updated to revision 3.
7
ответ дан 14 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

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