Идея в следующем: "Апстримные" сорцы лежат в бранче, например upstream, апдейтятся там некоторым образом (git pull, git svn fetch, git cvsimport - whatever). В рабочем бранче лежат мои патченые исходники, спеки и так далее. gear пакует бранч upstream в тарбол и делает git-diff-tree между upstream и некоторым tree-ish. Почему tree-ish, а не HEAD? А потому что я обычно делаю git-mv -k * .* %name, и вот этот %name мне и надо diff'ать. Сейчас никто не умеет принимать в качестве аргумента tree-ish, только путь. Предлагается следующий синтаксис: tar: dir name=name base=base branch=branch diff: dir name=name base=base branch=branch В первом случае добавляется параметр "branch", в моём примере это будет выглядеть так: tar.bz2: . name=@name@-@version@ base=@name@-@version@ branch=upstream-@version@ Где upstream-@version@ это имя тега, который я ставлю по результатам чекаута (чисто для удобства). diff: projectname name=@name@-@version@-alt.patch base=. branch=upstream-@version@ projectname - имя каталога с сорцами в рабочем бранче. По нему получаем tree_ish_2. base - имя каталога с сорцами в бранче upstream. По нему и по имени бранча получаем tree_ish_1. Дальше делается: git-diff-tree --patch-with-stat $tree_ish_1 $tree_ish_2 > $name.patch Таким образом получается что у нас "скачет" $tree_id. Это совсем бредовая идея или можно начинать готовить патч? ;-) -- Regards, Sir Raorn.