* [devel] .gear/rules diff: и .gitignore @ 2011-01-14 7:20 Sergey Shilov 2011-01-14 8:05 ` REAL ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Sergey Shilov @ 2011-01-14 7:20 UTC (permalink / raw) To: devel Всем доброго времени суток! Имеем репозиторий (erlang) с апстримной (git) историей. remotes/upstream/master -> upstream -> patches/alt ... /patches/... -> master В .gear/rules соотв. дифами последовательно делаются патчи. Архив тарбола (а надо-ли архивировать?) исходников делается из upstream Апстрим между релизами поменял .gitignore Получается, что в патчах (первом) изменение есть, а самого измененного файла в исходниках (по понятной причине) нет. Требуется помощь зала :-) -- С уважением С.Шилов. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 7:20 [devel] .gear/rules diff: и .gitignore Sergey Shilov @ 2011-01-14 8:05 ` REAL 2011-01-14 8:38 ` Ivan A. Melnikov 2011-01-14 10:29 ` Sergey Vlasov 2 siblings, 0 replies; 12+ messages in thread From: REAL @ 2011-01-14 8:05 UTC (permalink / raw) To: ALT Linux Team development discussions 14.01.2011 13:20, Sergey Shilov пишет: > Имеем репозиторий (erlang) с апстримной (git) историей. > remotes/upstream/master -> upstream -> patches/alt ... /patches/... -> master > В .gear/rules соотв. дифами последовательно делаются патчи. > Архив тарбола (а надо-ли архивировать?) исходников делается из upstream > > Апстрим между релизами поменял .gitignore > Получается, что в патчах (первом) изменение есть, а самого измененного файла в > исходниках (по понятной причине) нет. Я в таких случаях (т.е. когда у апстрима есть .gitignore) убиваю его (.gitignore, не апстрим) сразу же. -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 7:20 [devel] .gear/rules diff: и .gitignore Sergey Shilov 2011-01-14 8:05 ` REAL @ 2011-01-14 8:38 ` Ivan A. Melnikov 2011-01-14 9:03 ` REAL 2011-01-14 10:29 ` Sergey Vlasov 2 siblings, 1 reply; 12+ messages in thread From: Ivan A. Melnikov @ 2011-01-14 8:38 UTC (permalink / raw) To: devel On Fri, 14 Jan 2011 09:20:07 +0200 Sergey Shilov <hsv@altlinux.org> wrote: > Всем доброго времени суток! > > Имеем репозиторий (erlang) с апстримной (git) историей. > remotes/upstream/master -> upstream -> patches/alt ... /patches/... > -> master В .gear/rules соотв. дифами последовательно делаются патчи. > Архив тарбола (а надо-ли архивировать?) исходников делается из > upstream > > Апстрим между релизами поменял .gitignore > Получается, что в патчах (первом) изменение есть, а самого > измененного файла в исходниках (по понятной причине) нет. > > Требуется помощь зала :-) > Что-то я не понимаю: если изменение произошло в апстриме, то оно должно быть отражено в ветке upstream -- так почему же .gitignore в patches/alt* отличается? При правильном merge или rebase не должно же вроде бы. -- WBR, Ivan A. Melnikov ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 8:38 ` Ivan A. Melnikov @ 2011-01-14 9:03 ` REAL 2011-01-14 9:08 ` Ildar Mulyukov 0 siblings, 1 reply; 12+ messages in thread From: REAL @ 2011-01-14 9:03 UTC (permalink / raw) To: ALT Linux Team development discussions 14.01.2011 14:38, Ivan A. Melnikov пишет: >> Апстрим между релизами поменял .gitignore >> Получается, что в патчах (первом) изменение есть, а самого >> измененного файла в исходниках (по понятной причине) нет. > > Что-то я не понимаю: если изменение произошло в апстриме, то оно должно > быть отражено в ветке upstream -- так почему же .gitignore в > patches/alt* отличается? При правильном merge или rebase не должно же > вроде бы. Погодите, что-то я тоже запутался :) . В патчах меняется .gitignore? А зачем? :) В любом случае, пока тут только телепатия поможет. -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 9:03 ` REAL @ 2011-01-14 9:08 ` Ildar Mulyukov 2011-01-14 10:00 ` REAL 0 siblings, 1 reply; 12+ messages in thread From: Ildar Mulyukov @ 2011-01-14 9:08 UTC (permalink / raw) To: devel On 14.01.2011 15:03:31, REAL wrote: > Погодите, что-то я тоже запутался :) . В патчах меняется .gitignore? > А зачем? :) > > В любом случае, пока тут только телепатия поможет. У меня был случай: апстрим положил в подпапку некую программу, разработанную апстримом2 (другим апстримом). В дерево попал и файл .gitignore, который мешал нормально заимпортировать файлы в этой папке. -- Ildar ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 9:08 ` Ildar Mulyukov @ 2011-01-14 10:00 ` REAL 0 siblings, 0 replies; 12+ messages in thread From: REAL @ 2011-01-14 10:00 UTC (permalink / raw) To: ALT Linux Team development discussions 14.01.2011 15:08, Ildar Mulyukov пишет: > У меня был случай: апстрим положил в подпапку некую программу, > разработанную апстримом2 (другим апстримом). В дерево попал и файл > .gitignore, который мешал нормально заимпортировать файлы в этой папке. У меня было несколько случаев с разными апстримами, из-за чего пропадали нужные файлы при первом же git clean. Поэтому с тех пор я .gitignore убиваю ВСЕГДА. По-моему, такому файлу нечего делать в дереве исходников. Если нужно что-то проигнорировать, то это лучше делать в .git/info/exclude -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 7:20 [devel] .gear/rules diff: и .gitignore Sergey Shilov 2011-01-14 8:05 ` REAL 2011-01-14 8:38 ` Ivan A. Melnikov @ 2011-01-14 10:29 ` Sergey Vlasov 2011-01-14 13:26 ` Sergey Shilov 2 siblings, 1 reply; 12+ messages in thread From: Sergey Vlasov @ 2011-01-14 10:29 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 1586 bytes --] On Fri, Jan 14, 2011 at 09:20:07AM +0200, Sergey Shilov wrote: > Всем доброго времени суток! > > Имеем репозиторий (erlang) с апстримной (git) историей. Если речь об этом репозитории: http://git.altlinux.org/people/hsv/packages/?p=erlang.git;a=shortlog;h=refs/heads/upstream это не апстримная история, а главным образом результат импорта архивов с релизами. Под апстримной историей обычно подразумевается использование именно апстримного git-репозитория в полном виде (ну или импорт через git-svn, hg2git, ..., но именно с сохранением отдельных изменений в том виде, как они лежат в апстримном репозитории, а не только срезов для отдельных релизов). > remotes/upstream/master -> upstream -> patches/alt ... /patches/... -> master > В .gear/rules соотв. дифами последовательно делаются патчи. > Архив тарбола (а надо-ли архивировать?) исходников делается из upstream > > Апстрим между релизами поменял .gitignore > Получается, что в патчах (первом) изменение есть, а самого измененного файла в > исходниках (по понятной причине) нет. Какие конкретно файлы пропадают, и на каком шаге? Выложите проблемный репозиторий, чтобы можно было сказать что-то конкретное. При импорте нужно использовать gear-update --ignore-exclude; без этой опции действительно пропадут файлы, которые попали в игнорируемые через .gitignore. Но даже если это произошло, рассинхронизации между diff и tar в gear из-за этого быть не должно - git archive при создании *.tar не смотрит в .gitignore (однако может смотреть в .gitattributes, если там есть такие файлы). [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 10:29 ` Sergey Vlasov @ 2011-01-14 13:26 ` Sergey Shilov 2011-01-14 14:03 ` Sergey Vlasov 0 siblings, 1 reply; 12+ messages in thread From: Sergey Shilov @ 2011-01-14 13:26 UTC (permalink / raw) To: devel В сообщении от Пятница 14 января 2011 12:29:46 автор Sergey Vlasov написал: > Если речь об этом репозитории: > http://git.altlinux.org/people/hsv/packages/?p=erlang.git;a=shortlog;h=ref > s/heads/upstream Да, но он пока без апстримной истории. > это не апстримная история, а главным образом результат импорта архивов с > релизами. Да так было. > Под апстримной историей обычно подразумевается использование > именно апстримного git-репозитория в полном виде (ну или импорт через > git-svn, hg2git, ..., но именно с сохранением отдельных изменений в том > виде, как они лежат в апстримном репозитории, а не только срезов для > отдельных релизов). Начиная с версии R13B03 апстрим переехал на https://github.com/erlang/otp.git :-) Я связал апстримный мастер с внутренней апстримной веткой и сейчас, начиная с R13B04 ветка upstream соответствует апстримному мастеру со всей его историей. > Какие конкретно файлы пропадают, и на каком шаге? Пропадают сами .gitignore при сворачивании gear -ом исходников в тарбол. Выбрасывает их сам gear (что логично). Просто при генерации патча в него попадают изменения содержимого самого .gitignore ну и ... Как получилось: - исходное состояние R13B04 (сейчас в /people/hsv/packages/erlang.git) tar (gear-update) upstream (merge) patches/alt (merge) /patches/... (merge) master - пристегиваю в удаленнны мастер (с историей) tag R13B04 remotes/upstream/master (merge) tag R13B04 upstream (merge) patches/alt (merge) /patches/... (merge) master - двигаюсь вперед на R14B01 upstream и upstream (merge) patches/alt (merge) /patches/... (merge) master В самом .gitignore между R13B04 и R14B01 upstream-а есть изменения. Вот они и попадают в вывод diff между upstream и patches/alt Возможно я чегой-то тут напартачил с мержем upstream и patches/alt ? > Выложите проблемный > репозиторий, чтобы можно было сказать что-то конкретное. Изменения я еще не публиковал, т.к. пакеты не собираются. Можно выложить, но боюсь после публикации сложно будет "вернуть все в сад". > При импорте нужно использовать gear-update --ignore-exclude; без этой > опции действительно пропадут файлы, которые попали в игнорируемые через > .gitignore. Но даже если это произошло, рассинхронизации между diff и tar > в gear из-за этого быть не должно Кстати, для gear было-бы логично игнорировать файлы попадающие под --ignore- exclude при diff: так же, как и при tar: Я вот сейчас получил именно на такую ситуацию. -- С уважением С.Шилов. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 13:26 ` Sergey Shilov @ 2011-01-14 14:03 ` Sergey Vlasov 2011-01-14 14:49 ` Dmitry V. Levin 2011-01-14 15:53 ` [devel] .gear/rules diff: и .gitignore Sergey Shilov 0 siblings, 2 replies; 12+ messages in thread From: Sergey Vlasov @ 2011-01-14 14:03 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 1195 bytes --] On Fri, Jan 14, 2011 at 03:26:45PM +0200, Sergey Shilov wrote: > Начиная с версии R13B03 апстрим переехал на https://github.com/erlang/otp.git > :-) Ага, и там есть файл .gitattributes: .gitattributes export-ignore .gitignore export-ignore Вот как раз из-за этого файла (а не .gitignore) git archive и выбрасывает из создаваемого архива файлы, для которых указан атрибут export-ignore. Явной опции для отключения этой функции у git archive нет, но можно перед его вызовом вписать в .git/info/attributes строку: * -export-ignore В этом случае git archive добавит в создаваемый архив все файлы независимо от содержимого .gitattributes. Т.е., создаваемый таким образом архив не будет в точности совпадать с апстримным из-за таких "лишних" файлов, зато будет содержать все файлы, которые могут встретится в выводе последующего git diff. > Кстати, для gear было-бы логично игнорировать файлы попадающие под --ignore- > exclude при diff: так же, как и при tar: Такой вариант (точнее, обработку export-ignore) реализовать существенно сложнее - git diff сам по себе не умеет даже исключать отдельные файлы, не говоря уже о том, чтобы смотреть в .gitattributes. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 14:03 ` Sergey Vlasov @ 2011-01-14 14:49 ` Dmitry V. Levin 2011-01-14 16:09 ` [devel] .gear/rules tar:, diff: и .gitattributes export-ignore Sergey Vlasov 2011-01-14 15:53 ` [devel] .gear/rules diff: и .gitignore Sergey Shilov 1 sibling, 1 reply; 12+ messages in thread From: Dmitry V. Levin @ 2011-01-14 14:49 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 814 bytes --] On Fri, Jan 14, 2011 at 05:03:58PM +0300, Sergey Vlasov wrote: > On Fri, Jan 14, 2011 at 03:26:45PM +0200, Sergey Shilov wrote: > > Начиная с версии R13B03 апстрим переехал на https://github.com/erlang/otp.git > > :-) > > Ага, и там есть файл .gitattributes: > > .gitattributes export-ignore > .gitignore export-ignore > > Вот как раз из-за этого файла (а не .gitignore) git archive и выбрасывает > из создаваемого архива файлы, для которых указан атрибут export-ignore. > > Явной опции для отключения этой функции у git archive нет, но можно перед > его вызовом вписать в .git/info/attributes строку: Но, поскольку локальные изменения в .git/info/ не передаются при git push и git fetch, это не очень удобно использовать при распределенной разработке с использованием gear. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules tar:, diff: и .gitattributes export-ignore 2011-01-14 14:49 ` Dmitry V. Levin @ 2011-01-14 16:09 ` Sergey Vlasov 0 siblings, 0 replies; 12+ messages in thread From: Sergey Vlasov @ 2011-01-14 16:09 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 4320 bytes --] On Fri, Jan 14, 2011 at 05:49:51PM +0300, Dmitry V. Levin wrote: > On Fri, Jan 14, 2011 at 05:03:58PM +0300, Sergey Vlasov wrote: > > On Fri, Jan 14, 2011 at 03:26:45PM +0200, Sergey Shilov wrote: > > > Начиная с версии R13B03 апстрим переехал на https://github.com/erlang/otp.git > > > :-) > > > > Ага, и там есть файл .gitattributes: > > > > .gitattributes export-ignore > > .gitignore export-ignore > > > > Вот как раз из-за этого файла (а не .gitignore) git archive и выбрасывает > > из создаваемого архива файлы, для которых указан атрибут export-ignore. > > > > Явной опции для отключения этой функции у git archive нет, но можно перед > > его вызовом вписать в .git/info/attributes строку: > > Но, поскольку локальные изменения в .git/info/ не передаются при git push > и git fetch, это не очень удобно использовать при распределенной > разработке с использованием gear. Я имел в виду, что это можно делать в gear (правда, сейчас там создаются только временные GIT_OBJECT_DIRECTORY и GIT_INDEX_FILE, но в принципе отсюда уже недалеко и до создания полноценного временного репозитория со своим .git/info/attributes). Это, кроме всего прочего, устранит возникшую сейчас зависимость поведения gear от содержимого .git/info/attributes в локальном репозитории. Хотя вообще это не очень красивый объезд. Ну и export-ignore - это не единственный атрибут, обрабатываемый git archive; есть ещё export-subst, приводящий к изменению содержимого файлов при экспорте, что точно так же может приводить к генерации в дальнейшем патчей, не накладывающихся на результат git archive. Вообще эту проблему можно решать несколькими способами: 1) Создавать в gear временный репозиторий с .git/info/attributes, в котором принудительно сбрасывать атрибуты export-ignore и export-subst. Плюсы: можно реализовать уже сейчас, изменяя только gear (не требуется патчить сам git). Минусы: если апстрим при выпуске релизов использует git archive, генерируемый gear архив перестанет совпадать с апстримным (в случае использования export-ignore будет содержать лишние файлы, для export-subst - нераскрытые шаблоны); при появлении в новой версии git нового атрибута, обрабатываемого git archive, придётся вновь исправлять gear. 2) Добавить в git archive опцию --ignore-attributes, полностью отключающую обработку атрибутов. Этот вариант отличается от 1) только большей устойчивостью к возможным будущим изменениям в git archive; однако появляется требование использования вместе с gear и новой версии git. Правда, можно добавить в gear ещё и определение наличия в используемой версии git archive нужной опции, и работу по варианту 1) в случае её отсутствия. 3) Можно пойти другим путём - решить, что не только команда tar в .gear/rules должна обрабатывать .gitattributes, но и команды diff должны давать результат, соотвествующий команде tar. Например, можно при формировании diff использовать не git diff-tree, а извлечь через git archive оба дерева и применить к ним обычный diff. В этом случае получаемый diff не будет содержать файлов, исключённых через export-ignore (если они исключены в обеих версиях), а также будет содержать раскрытые шаблоны для export-subst. Существенные недостатки такого варианта тоже очевидны - в первую очередь это скорость работы (распаковка архивов с последующим сравнением всех файлов может занять значительное время), также пропадает возможность получения diff в формате git для последующего применения через git apply (например, при модификации бинарных файлов или символических ссылок). Можно, конечно, ввести в набор команд .gear/rules в дополнение к обычному diff отдельную команду, работающую через git archive, для применения только в случаях, когда используется .gitattributes. 4) Для ускорения работы варианта 3) можно попытаться добавить в git diff-tree код для обработки .gitattributes способом, аналогичным git archive, но это будет существенно сложнее, чем отрывать обработку атрибутов от git archive. 5) Ничего не делать, предложить мантейнерам пакетов, столкнувшимся с проблемой, паковать tar: @name@-@version@-@release@ без выделения патчей в src.rpm. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [devel] .gear/rules diff: и .gitignore 2011-01-14 14:03 ` Sergey Vlasov 2011-01-14 14:49 ` Dmitry V. Levin @ 2011-01-14 15:53 ` Sergey Shilov 1 sibling, 0 replies; 12+ messages in thread From: Sergey Shilov @ 2011-01-14 15:53 UTC (permalink / raw) To: devel В сообщении от Пятница 14 января 2011 16:03:58 автор Sergey Vlasov написал: > > Кстати, для gear было-бы логично игнорировать файлы попадающие под > > --ignore-exclude при diff: так же, как и при tar: > Такой вариант (точнее, обработку export-ignore) реализовать существенно > сложнее А, наверное, надо :-( > - git diff сам по себе не умеет даже исключать отдельные файлы, не > говоря уже о том, чтобы смотреть в .gitattributes. Говорят можно в ~/.gitconfig: [diff "nodiff"] command = /bin/true и в .git/info/attributes: gitignore diff=nodiff С локальным репозиторием работает, но как это к gear прикрутить ... -- С уважением С.Шилов. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2011-01-14 16:09 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-01-14 7:20 [devel] .gear/rules diff: и .gitignore Sergey Shilov 2011-01-14 8:05 ` REAL 2011-01-14 8:38 ` Ivan A. Melnikov 2011-01-14 9:03 ` REAL 2011-01-14 9:08 ` Ildar Mulyukov 2011-01-14 10:00 ` REAL 2011-01-14 10:29 ` Sergey Vlasov 2011-01-14 13:26 ` Sergey Shilov 2011-01-14 14:03 ` Sergey Vlasov 2011-01-14 14:49 ` Dmitry V. Levin 2011-01-14 16:09 ` [devel] .gear/rules tar:, diff: и .gitattributes export-ignore Sergey Vlasov 2011-01-14 15:53 ` [devel] .gear/rules diff: и .gitignore Sergey Shilov
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git