Git SVN и внешние - PullRequest
       3

Git SVN и внешние

4 голосов
/ 24 ноября 2010

Я хочу начать использовать git-svn для проектов, в которых используется центральный репозиторий SVN. Проблема в том, что мы используем окна и что проект SVN использует внешние компоненты, чтобы иметь возможность повторно использовать некоторый код в двух разных проектах. В системе Unix мы бы использовали программные ссылки, но так как мы застряли в Windows, мы решили использовать внешние возможности в качестве обходного пути для ограничений в Windows XP. Если у вас есть лучшее решение для этого, я был бы очень рад это услышать! Структура SVN выглядит следующим образом:

branch
tag
trunk
 -web
  --views
     ---External to commonFiles
-admin
  --views
    ---External to commonFiles
-commonFiles

Могу ли я использовать git-svn, и если да, то как я могу это сделать?

Редактировать Я долго искал хорошее решение, но после написания этого поста я начал задумываться о том, как это на самом деле связано с svn: externals. Если я использую git svn, я получу это

branch
tag
trunk
 -web
  --views
     ---commonFiles (empty folder since externals didn't work)
-admin
  --views
    ---commonFiles (empty folder since externals didn't work)
-commonFiles

Поскольку у меня есть папка commonFiles в git, могу ли я использовать ту же технику, что и в svn в git? Чтобы связать пустые папки commonFiles с общими файлами, которые поддерживаются с помощью git?

Ответы [ 4 ]

1 голос
/ 24 ноября 2010

Да, вы должны иметь возможность использовать git equivelant через подмодуль git.Папка .git и файл .gitmodules должны существовать на том же уровне, что и web, и администратор проверяет их.Папка .git будет существовать во внешней папке.Вы можете игнорировать папки .svn в git и наоборот для svn.

Надеюсь, это поможет!

0 голосов
/ 02 мая 2013

Поскольку неведомый говорит, что переходы - хороший вариант.

При проверке исходное дерево будет выглядеть так:

branch
tag
trunk
 -web
  --views
-admin
  --views
-commonFiles

Внешние элементы были опущены. Чтобы получить список внешних , вы можете использовать следующую команду в существующем хранилище:

svn propget svn:externals -R

Для относительных внешних элементов (тех, которые начинаются с ..) это просто. Вы можете использовать mklink для создания перекрестка. В этом примере выполните следующие команды:

mklink /J trunk\web\views\commonFiles trunk\commonFiles
mklink /J trunk\admin\views\commonFiles trunk\commonFiles

Вы можете добавить эти команды в git-hook, чтобы убедиться, что они создаются при извлечении.

0 голосов
/ 19 декабря 2010

Я сейчас нашел решение, которое отлично работает для меня! Я обнаружил, что можно использовать то, что называется переходами в Windows XP. Соединения похожи на монтирование с той разницей, что если вы удалите папку, другая папка также будет удалена. Итак, в итоге я создал соединения между моими папками commonFiles и добавил игнорирование в папки с представлениями.

branch
tag
trunk
 -web
  --views
     ---commonFiles (junction to *, ignored in git)
-admin
  --views
    ---commonFiles (junction to *, ignored in git)
-commonFiles (*, controlled by git)
0 голосов
/ 25 ноября 2010

Вы можете попробовать иметь отдельные рабочие деревья с несколькими репозиториями, а затем использовать инструмент mr . Для облегчения работы с несколькими репо.

...