* [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 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
* 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
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