2009-06-30 7 views
4

У меня есть проект в SVN, и я пытался клонировать его с git-svn. Я следовал примеру в git-svn docs.git svn clone не проверяет все каталоги

git svn clone svn+ssh://host/path/trunk project_name 

Команда выполнена без каких-либо сообщ ошибок, но клонировали проект не содержит все каталоги, как проект в SVN.

На верхнем уровне, мой SVN проект имеет ...

$ svn ls svn+ssh://host/path/trunk 
README 
Rakefile 
app/ 
config/ 
db/ 
doc/ 
lib/ 
log/ 
public/ 
script/ 
test/ 
tmp/ 
vendor/ 

После клонирования локально у меня есть ...

README 
Rakefile 
app 
config 
doc 
public 
script 
test 

Там также подкаталогов отсутствует.


UPDATE

клонировали другой Экспериментально проект на одном хосте. Казалось, что он работает нормально. Что особенного в этом? Я ничего не могу придумать, кроме того, что я только что создал его и импортировал его в SVN до клонирования. Будет ли это иметь значение?


Пробуем создание совершенно нового проекта, импортирующего SVN и клонирование. Получил тот же результат, тот же недостающий.

ответ

11

Насколько я могу сказать, мерзавец не треки пустые каталоги:

http://git.or.cz/gitwiki/GitFaq#CanIaddemptydirectories.3F:

То есть, каталоги не должны быть добавлены в хранилище, и не отслеживаются сами по себе.

Имеет ли это смысл? Пропущены ли пропавшие каталоги?

+0

Да, это были пустые каталоги, которые не были втянуты из SVN. Благодарю. – Ethan

+0

Хороший улов. +1. – VonC

+0

У меня была аналогичная проблема. Согласно ссылке, Git фактически не отслеживает каталоги. Он отслеживает файлы. Таким образом, ни один файл в каталоге не означает, что Git не знает об этом. – seanmrafferty

1

Вы уверены, что ваш SVN не использует svn:external (см. Комментарии)?
Более подробно этот процесс в статье "moving from svn to git"

svn-git действительно должен предупредить вас каким-то образом, что он не поддерживает выборку внешние.
Это я узнал, заметив, что svn log не имел проверок этих файлов, а затем видел, когда я сделал чистый svn checkout, что он извлекал внешние ресурсы для каталога поставщиков/плагинов.

Итак, я решил просто доработать каталог поставщиков/плагинов, отсоединив внешнюю ссылку и переместиться на подмодули git при обновлении.
То, что я действительно хотел сделать, но не видел, как, должен был ссылаться на код плагина в качестве HTTP URL и сохранить как подмодуль, так что я бы иметь под рукой ссылку на месте источника и пересмотра

+0

Спасибо. Я на 100% уверен, что здесь этого не происходит. Я проверю ссылку. – Ethan

+0

@ Эфан: Хорошо, я оставляю сообщение для информации. Вы можете опубликовать свой собственный ответ, если найдете основную причину, и выберите его как официальный. – VonC

+0

Спасибо за помощь. Я думаю, мне нужно кое-что прочитать и получить лучшее общее представление о том, как работает git. – Ethan

1

Вы можете попробовать

svn2git

или

git svn clone svn+ssh://host/path project_name --trunk=trunk/* 

Существует некоторая форма глубокого клонирования в мерзавца 1.6+, но я не уверен, если это правильный синтаксис

+0

Спасибо. Я проверил svn2git на Github. Я попробую, когда смогу. – Ethan

Смежные вопросы