git svn master для перехода на master - все еще пытается зафиксировать переход - PullRequest
1 голос
/ 28 июня 2011

Я следовал этому сообщению о том, как создать и оформить ветку с помощью git svn, чтобы ветка была фактически создана в репозиториях svn.Это прекрасно работало.

Когда я закончил свою ветку, я сделал проверку на master и произвел git merge.Это работало нормально.Затем я отправил коммит обратно в транк в репозитории svn, поэтому выдает git svn dcommit.

И он попытался зафиксировать ветку.Несмотря на то, что теперь я проверил основную ветку.Чего мне не хватает?

$ git svn branch -m "test branch" test_branch
$ git checkout --track -b test_branch remotes/test_branch
$ Hack hack hack...
$ git svn dcommit --dry-run    # Make sure you're committing to the right SVN branch
$ git svn dcommit              # Commit changes to "test_branch" branch in SVN
$ git checkout master
$ git merge test-branch
$ git svn dcommit # why is this committing to the branch instead of trunk??

Это мой .git / config на случай, если это имеет значение

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
[svn-remote "svn"]
    url = mysvnrepos.com/svn/project
    fetch = trunk:refs/remotes/git-svn
    branches = branches/*:refs/remotes/*
[branch "test_branch"]
    remote = .
    merge = refs/remotes/test_branch

1 Ответ

0 голосов
/ 28 июня 2011

Я думал, что кто-то уже спросил это, но я не могу найти это снова. В любом случае, git-svn с ветками сложен. Вы должны создать пустые ветви на стороне svn, используя git svn branch или обычный svn mkdir. Затем вы проверяете эти ветки с помощью git и перебираете коммиты поверх них без использования слияний на уровне git. Таким образом, ветки git имеют правую ветку svn, указанную в их предке, и dcommit фиксирует правильную ветку. Вы можете проверить, что ветка git-svn будет использовать git svn info.

...