ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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