Git SVN: как мне работать с "частичными" ветвями? - PullRequest
4 голосов
/ 23 мая 2011

Под «частичным» я подразумеваю ветви в моем репозитории SVN были скопированы не из транка /, а из подкаталога транка /.Вот макет репозитория SVN:

trunk/
    core
    projectA
    projectB
    ...
branches/
    core_new_feature (branched from "core" on trunk)
    another_branch
    ...

Я запустил свой локальный репозиторий и получил:

mkdir git-svn-repo
cd git-svn-repo
git svn init -s svn+ssh://me@svn-server/path/to/repository
git fetch
<wait four days>

Теперь я пытаюсь работать с веткой "core_new_feature".git branch -a показывает:

* master
remotes/core_new_feature
... (a bunch of other branches)

Итак, я пытаюсь:

git checkout --track -b git_new_feature remotes/core_new_feature

Git извлекает файлы и, похоже, работает.Тем не менее, когда я пытаюсь просмотреть мою недавно проверенную ветку (ls local-git-root / core /), я получаю странность.В частности, я не вижу свой исходный код или какие-либо из существующих изменений в ветви SVN core_new_feature.Все, что я вижу в core /, - это несколько пустых каталогов, кажущееся случайным незначительное влияние моего выходящего дерева исходных текстов в core.

Однако источник "core_new_feature" доступен в local-git-root / src / - это просто в корне моего репозитория git.projectA и projectB сверху исчезли.

Мне нужно, чтобы изменения в svn-ветке «core_new_feature» переместились в правильное местоположение (а именно local-git-root / core /), а для другихпроекты не исчезают

Очевидно, что здесь я упускаю какой-то важный шаг, но я просмотрел все примеры, которые смог найти, и, похоже, ни один из них не решает эту проблему.Может быть, мне нужно настроить свой локальный репозиторий иначе?

Для справки, вот мой файл .git / config:

[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
        hideDotFiles = dotGitOnly
[svn-remote "svn"]
        url = svn+ssh://me@svn-server/path/to/repository
        fetch = repository/trunk:refs/remotes/trunk
        branches = repository/branches/*:refs/remotes/*
        tags = repository/tags/*:refs/remotes/tags/*
[branch "core_new_feature"]
        remote = .
        merge = refs/remotes/core_new_feature

В моем репозитории используются стандартные ветки / теги / trunk / layout.Я запускал команды, используя оболочку git-bash, которую предоставляет msysgit.Версия 1.7.4.

Заранее благодарен за любую помощь.

1 Ответ

0 голосов
/ 02 июля 2011

Я сам не использовал git-svn, но у markjaquith есть хороший пост о том, как он использует его для управления своими коммитами при разработке WordPress. Вы могли бы рассмотреть его, чтобы посмотреть, упоминает ли он что-нибудь полезное. Я спрятал его в следующий раз, когда обновляю один из моих плагинов WordPress или создаю новый (все, что есть у WordPress в SVN).

http://markjaquith.wordpress.com/2011/05/26/developing-on-wordpress-using-git/

...