ハッシュ値が一致しないorig.tarballでアップロードが蹴られる時

Mon, Jun 26, 2017 in debian

git-buildpackageでビルドしたのだけど、pristine-tarブランチに作られたファイルから生成されるtarballと最初にアップロードしたorig.tarballとハッシュ値が違うということで蹴られることがある。tarballは都度若干違う値になっちゃうから、そもそもgbp import-origした際にキチンとpristine-tar作るようにしてあるはず、なんだけど、ミスをすることが多々…

で、どうやってリカバリするかというと、apt source して orig.tarball を差し替える(ダメな場当たり対応。良くやる)というのが思いつくのだけど、ちゃんとpristine-tarブランチのファイルを置き換えた方が良い。

とはいうものの、このブランチのファイル、どうやって生成しているのかよく分かってない。いっつも単にimport-origしてただけだし。うーん。

色々試行錯誤した末に、こうしてみた。

  • 適当なところに apt source でリポジトリにあるorig.tarballを持ってくる
  • 適当なところで debcheckout してテンポラリ作業用のgitリポジトリを持ってくる
  • テンポラリgitリポジトリで
    $ cd /tmp/<package repo>
    $ git checkout pristine-tar
    $ git rm <該当バージョンのファイル>; git commit -a
    $ git checkout master; git tag -d upstream/<version>
    $ gbp import-orig <orig.tarball>
    

    などとしてpristine-tarブランチのファイルを更新して、実際のgitリポジトリに移動して、更新分だけ貰う

    $ cd ~/<package repo>
    $ git checkout pristine-tar
    $ git pull file:::/tmp/<package repo> pristine-tar
    

回りくどいなーとは思うのだけども。