Объединение нескольких git-репозиториев с пробелом в имени - PullRequest
0 голосов
/ 30 июля 2010

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

Например, это не будет работать, если хранилище будет называться «мои цифры» вместо «цифры».

Я использую msysgit.

Вот пример с репозиторием "Мои фигуры", который не работает:

/d/git/my figures (master)
$ git filter-branch --index-filter \
> 'git ls-files -s | sed "s-\t-&my figures/-" |
> GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
> git update-index --index-info &&
> mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
Rewrite d9f3a10522f2a0e1531f45e8e7b3a518f0d714c5 (1/1)mv: when moving multiple files, last argument must be a directory
Try `mv --help' for more information.
index filter failed: git ls-files -s | sed "s-\t-&my figures/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE
rm: cannot remove `d:/git/my figures/.git-rewrite/revs': Permission denied
rm: cannot remove directory `d:/git/my figures/.git-rewrite': Directory not empty

Повторная попытка с хранилищем, переименованным в myfigures, работает нормально:

/d/git/myfigures (master)
$ git filter-branch --index-filter 'git ls-files -s | sed "s-\t-&myfigures/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
Rewrite d9f3a10522f2a0e1531f45e8e7b3a518f0d714c5 (1/1)
Ref 'refs/heads/master' was rewritten

Итак, как настроить этот вызов git filter-branch для поддержки имени репозитория с пробелом в них?

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Я, наконец, задал вопрос в списке рассылки git: один из участников пришел с ответом: к подкоманде mv следует добавить некоторые цитаты, они обновили документацию: см. Последний пример из http://git -scm.com / Docs / ГИТ-фильтр-филиал

0 голосов
/ 30 июля 2010

Я считаю, что должно быть достаточно процитировать имена файлов, которые вы передаете в git update-index:

... | sed "s-\t-&\"my figures\"-" | ...

Конечно, цитирование / экранирование будет немного проще, если вы поместите фильтр всвой собственный файл - все это не будет заключено в одинарные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...