[devel] средства импорта проекта в git из тарболлов
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вс Июн 10 21:19:43 MSD 2007
On Sun, Jun 10, 2007 at 08:31:00PM +0400, Eugene Prokopiev wrote:
> Slava Semushin пишет:
> > 2007/6/9, Eugene Prokopiev <prokopiev / stc.donpac.ru>:
> > [...]
> >
> >>>Попробуй gear-update.
> >>
> >>$ gear-update -f -v ~/callweaver-1.1.99.20070609.tar.gz callweaver/
> >>error: 'callweaver/AUTHORS' has local modifications (hint: try -f)
> >>...
> >>error: 'callweaver/utils/streamplayer.c' has local modifications (hint:
> >>try -f)
> >
> >
> > Я бы попробовал так:
>
> Поясните, пожалуйста, смысл этих манипуляций
>
> > $ PAGER=cat git diff >back.diff
>
> вытаскиваем изменения (между чем и чем?)
Между index и фактически имеющимися в рабочей копии файлами. Хотя в
данном случае следовало бы откатывать не к индексу, а к последнему
коммиту (HEAD).
> кстати, вывод выглядит так:
>
> diff --git a/.gear-rules b/.gear-rules
> diff --git a/callweaver-ael-macro.patch b/callweaver-ael-macro.patch
> ...
diff без фактического содержимого в выводе git-diff появляется в
случае, когда файл в рабочей копии отличается по mtime/inode от
сохранённого в индексе, но на самом деле совпадает по содержимому.
Обычно это происходит в случае, когда файл редактировали, но затем
вернули в первоначальное состояние.
Кстати, вызов git status устранит все несовпадения рабочей копии с
индексом такого рода и покажет, какие файлы реально были
модифицированы.
> > $ PAGER=cat git diff | patch -p1 -R
>
> вливаем эти же изменения поверх самих себя (смысл этого вообще от меня
> ускользает)
Опция -R означает, что изменения откатываются.
> и поскольку на предыдущем шаге мы получили не совсем diff, то
> результатом этой операции является:
>
> patch: **** Only garbage was found in the patch input.
На самом деле вместо patch -p1 -R следовало использовать средства,
имеющиеся в git: git apply -R (а в данном случае ещё и с опцией
--index). А к вызовам git diff тогда следовало бы добавить опцию
--binary - тогда это будет работать и в случае, когда были изменены не
только текстовые файлы.
> > $ gear-update -f -v ~/callweaver-1.1.99.20070609.tar.gz callweaver/
>
> результат аналогичен предыдущему gear-update, ошибки те же:
>
> error: 'callweaver/AUTHORS' has local modifications (hint: try -f)
> error: 'callweaver/BUGS' has local modifications (hint: try -f)
> ...
>
> > $ patch -p1 <back.diff
>
> еще раз накатываем сохраненные изменения
>
> > $ rm -f back.diff
>
> ну это единственное, что понятно :)
>
> > Но, скорее всего это не самое лучшее решение.
>
> да, выглядит просто жутко ...
Вообще в git@ недавно предлагалась реализация команды git-stash,
позволяющей сохранить и временно убрать локальные изменения из рабочей
копии, а потом их восстановить (возможно, наложив уже на обновлённую
версию).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: Digital signature
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20070610/f153909a/attachment-0001.bin>
Подробная информация о списке рассылки Devel