git Windows клон репозитория svn пытается создать имя папки с двоеточием в нем

#git #msysgit

#git #msysgit

Вопрос:

Я создал git-клон http://code.google.com/p/jpcsp / . Позже я попытался обновиться до последней версии путем извлечения, объединения, сброса и множества других вещей, которые я не могу вспомнить все или порядок, в котором они находятся. На данный момент локальный репозиторий git находится с заголовком в последней версии начального клона, я не могу выполнить перебазирование (перечисляет вещи, которые нуждаются в обновлении, а затем говорит «обновить индекс — обновить: команда вернула ошибку: 1») и, я думаю, не может выполнить проверку после svn версии 1005.

Основная проблема, по-видимому, заключается в том, что в версии 1006 файл с именем ‘G: […]’ был передан в svn, а затем удален в следующей редакции. Теперь все значимые команды завершаются ошибкой, например, «фатально: не удается создать каталог в G:[…]» — это сообщение об ошибке от «git checkout -f HEAD» . HEAD теперь находится в исходном клоне, который является 1994 годом в svn. Таким образом, он пытается создать папку с G: в имени, которое неприемлемо для Windows. Также команда ‘git ls-tree HEAD’ имеет в своем выводе следующую строку дерева: ‘[…] tree [sha1] «G: […]»‘, которая, по-видимому, является путем к локальной папке на компьютере пользователя, который отправил ревизию 1006 в репозиторий svn — mabe, это приводит к сбою при извлечении git-эквивалента ревизии 1994 года . Еще одна вещь, которая может вызывать проблемы, заключается в том, что мой компьютер видит воображаемые съемные диски, включая G:, которых там нет в первую очередь — это было с тех пор, как я купил его более года назад, и это может сбивать с толку git, а может и нет.

Я также создал сообщение в списке рассылки msysgit наhttp://groups.google.com/group/msysgit/browse_thread/thread/dfdeae9a85f3f534 с более подробной информацией о некоторых командах, которые я выполнял в командной строке, и их выводе, но я был еще более сбит с толку, так как думал, что проблема в другом.

Одна вещь, которую я пробовал, но у меня не получилось, это выполнить git rebase -i, а затем что-то вроде squash , но git все еще жаловался на невозможность создать папку с помощью G: […]

Сегодня я повторно клонировал репозиторий svn в другую папку, и это также выдавало ошибки. Затем первая проверка последней версии svn вернула ту же ошибку не удается создать папку.

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

—<> РЕДАКТИРОВАТЬ<>— : Решение с ‘git svn fetch -r0:’ и ‘git svn fetch -r: HEAD’, похоже, работает . Теперь у меня есть проверка последнего коммита svn и журнал всей истории проекта, за исключением 2 коммитов. Я получил сообщение о том, что репозиторий находится в отделенном HEAD, поэтому мне придется выяснить, что это значит. У меня есть несколько вопросов о новой ситуации. Я полагаю, что с этого момента я должен получать номера версий из svn до тех пор, пока я сохраняю этот локальный репозиторий git? И повлияет ли это на мою способность выполнять dcommit на более позднем этапе?

Комментарии:

1. Cygwin поддерживает двоеточия и другие подобные зарезервированные символы в именах файлов в Windows (путем сопоставления с областью частного использования Unicode), поэтому вы можете попробовать Cygwin git.

Ответ №1:

Возможно, есть способы получше, но вы можете попробовать:

 $ git svn fetch -r<last revision fetched>:<faulty revision -1>
$ git svn fetch -r<fault revision  2>:<latest revision>
  

Комментарии:

1. Это не помогает мне выполнить проверку из локального репозитория, где он жалуется на невозможность создать папку с G: в ней.

2. Если вы клонируете или извлекаете без этой ревизии и возвращаемой ревизии, проверка не будет пытаться ее создать.

3. Похоже, это работает, поскольку я могу проверить последнюю версию фиксации, и у меня есть журнал для всей истории проекта, хотя в нем говорится, что в данный момент он находится в отделенном заголовке, который я должен исследовать.