On Sun, Jun 10, 2007 at 08:31:00PM +0400, Eugene Prokopiev wrote: > Slava Semushin пишет: > > 2007/6/9, Eugene Prokopiev : > > [...] > > > >>>Попробуй 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 > еще раз накатываем сохраненные изменения > > > $ rm -f back.diff > > ну это единственное, что понятно :) > > > Но, скорее всего это не самое лучшее решение. > > да, выглядит просто жутко ... Вообще в git@ недавно предлагалась реализация команды git-stash, позволяющей сохранить и временно убрать локальные изменения из рабочей копии, а потом их восстановить (возможно, наложив уже на обновлённую версию).