Чтобы добавить к ответу Лука:
Константы времени компиляции
Свойства, значение которых известно во время компиляции, можно пометить как константы времени компиляции, используя const. Такие свойства должны удовлетворять следующим требованиям:
blockquote>
- Верхний уровень или элемент объекта
- Инициализировано значением типа String или примитивным типом
- Нет пользовательского getter
Источник: Официальная документация
Кажется, что это не возможно. В то время как возможно иметь текущего мерзавца 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 пересмотру с помощью второго блока кода выше.
Я думаю, что это должно быть возможно одним из двух способов... Я обрисую в общих чертах их теперь и попытаюсь конкретизировать их позже, если я могу понять их. Если кто-либо видит, как конкретизировать часть или знает, почему часть не будет работать..., прокомментируйте!
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
Это могло быть жестко, чтобы сделать то, что Вы хотите. Можно импортировать мерзавца 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
Можно хотеть к Адаптации контроля. Я использовал его для преобразования репозитория мерзавца в тот svn так, чтобы моя работа могла быть размещена в нашей компании svn сервер. Это довольно гибко, таким образом, это может делать то, что Вы хотите.