Прививание истории Мерзавца на ответвление SVN

Чтобы добавить к ответу Лука:

Константы времени компиляции

Свойства, значение которых известно во время компиляции, можно пометить как константы времени компиляции, используя const. Такие свойства должны удовлетворять следующим требованиям:

  • Верхний уровень или элемент объекта
  • Инициализировано значением типа String или примитивным типом
  • Нет пользовательского getter
blockquote>

Источник: Официальная документация

6
задан Jason Plank 15 March 2011 в 22:30
поделиться

4 ответа

Кажется, что это не возможно. В то время как возможно иметь текущего мерзавца repo соединенный с текущим svn repo, не кажется возможным воспроизвести историю мерзавца repo в к svn repo.

Основная проблема, которую я имел, заставляла мерзавца-svn 'фиксироваться' на единственной фиксации svn. Решение этой проблемы, кажется, git-svn set-tree. Это сообщение в блоге было самым полезным:
http://www.reonsoft.com/~john/blog/2008/06/05/git-first-git-svn-later/

Это - насколько я мог получить попытку сохранить историю в svn:

git branch svn-reconsile HASH_OF_SECOND_COMMIT
git checkout -f svn-reconsile

git svn init file://path/to/repos/myproject/branches/git-import
git svn fetch

git svn set-tree HASH_OF_SECOND_COMMIT

git rebase git-svn

git merge master

git svn dcommit

Проблема состоит в том что git svn dcommit только сделает один пересмотр в svn... не один для каждой фиксации в master перейдите.... для этого, история раздавлена в svn.

Таким образом, более легкое решение состоит в том, чтобы просто запустить от внешнего источника мерзавца-svn, использующего дерево набора, и быть удовлетворено, что история находится все еще в мерзавце, даже если это не находится в svn. Это может быть сделано со следующим:

git svn init file://path/to/repos/myproject/branches/git-import
git svn fetch

git svn set-tree HASH_OF_MOST_RECENT_COMMIT

git rebase git-svn

Если у кого-либо есть какая-либо идея, как обойти проблему сплющивания (я попробовал --no-squash) прокомментируйте! В лее умных комментариев я просто собираюсь принять хранение истории мерзавца и прививание к новому svn пересмотру с помощью второго блока кода выше.

2
ответ дан 17 December 2019 в 02:35
поделиться

Я думаю, что это должно быть возможно одним из двух способов... Я обрисую в общих чертах их теперь и попытаюсь конкретизировать их позже, если я могу понять их. Если кто-либо видит, как конкретизировать часть или знает, почему часть не будет работать..., прокомментируйте!

1 - На месте использование мерзавца-svn
(Следующее является псевдо командами, ОНИ НЕ РЕАЛЬНЫ - НЕ ИСПОЛЬЗУЮТ ИХ),

rm .svn
(configure git-svn '/myproject/branch/git-remerge')
git svn sync_versions --svn_revision=123 --hash=ad346f221455
git svn dcommit

2 - Используя отдельного мерзавца-svn repo как прокси
(Следующее является псевдо командами, ОНИ НЕ РЕАЛЬНЫ - НЕ ИСПОЛЬЗУЮТ ИХ),

mkdir ../svn_proxy
cd ../svn_proxy
git svn init
git checkout hash_of_svn_branch_point
git pull ../messy_repo
1
ответ дан 17 December 2019 в 02:35
поделиться

Это могло быть жестко, чтобы сделать то, что Вы хотите. Можно импортировать мерзавца repo в svn через что-то вроде этого: http://code.google.com/p/support/wiki/ImportingFromGit, но я думаю, что у Вас будут конфликты. Вы могли просто воссоздать свой SVN repo с нуля на основе Вашего мерзавца repo.

Для дальнейшего использования, вероятно, было бы легче просто использовать Мерзавца в качестве клиента SVN:

git-svn clone path/to/your/svn/repo
git-commit -a -m 'my small change'
vi some files to change.txt
git-commit -a -m 'another small change' 
git-svn dcommit # sends your little changes as individual svn commits
2
ответ дан 17 December 2019 в 02:35
поделиться

Можно хотеть к Адаптации контроля. Я использовал его для преобразования репозитория мерзавца в тот svn так, чтобы моя работа могла быть размещена в нашей компании svn сервер. Это довольно гибко, таким образом, это может делать то, что Вы хотите.

1
ответ дан 17 December 2019 в 02:35
поделиться
Другие вопросы по тегам:

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