[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