質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.32%

  • Git

    1414questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。

リリースした実行バイナリの保管とソースコードとの整合性を維持する方法

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 246

testset

score 111

 聞きたいこと

バイナリリリースするうえで、リリース物として管理を行いたいが、git等に乗せてしまうと、サイズが肥大化し、clone等に時間がかかってしまうため、何か良い方法はありますでしょうか。
"こんな方法"が素晴らしかった や、試した手順での改善点等あれば教えていただけると幸いです。

 背景

受託開発で複数回リリース(納品)がある案件の管理を行っています。
リリース管理を行うにあたり、バイナリをどこかに保存しておく必要がありました。

 対象となったプロジェクトの言語等

  • .NET Framework 4.5 (C#) Windows-forms/WPF application
  • Spring framework 4.x target: war
  • Android project (gradle, java)

バイナリをコミットする理由は、(内部のファイルはタイムスタンプ等を持っているため、)ビルドしても前回と全く同じデータにならないためです。

 試したこと1

対応:
バイナリリリース用ブランチを用意してリリースビルドの都度、マージコミットとバイナリをコミットする。
結果:
リポジトリが肥大化し、pullに時間がかかるようになってしまった。

 試したこと2

対応:
CIでビルドを行い、別リポジトリへコミットする。
結果:
どれが最終リリースなのかわかりにくくなった。
ビルド時間等から類推することができるが、ソースの特定や紐づけに時間がかかるようになった。
また、リリース対象外のバイナリの間引きが難しかった。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

一般に最終生成物であるbinaryはrepoには含めません。一度でも含めると永遠と肥大化したままなので、当該履歴をrebase or filterしてして取り除き、新たにremoteにrepoを作り直してpushする必要があります。

最終生成物はGithubならGithub Releaseに置くのが一般的です。その他、適当なFTP/httpサーバーに置くことが多いと思います。

とにかくでかいファイルを含めないことが肝要です。

最終生成物以外ででかいファイルを含める必要がある場合は、git-lfsの利用を検討してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/20 00:25

    適当なFTP/HTTPサーバーに置くというときは、TAG名等と一致させた名前を配置するということでしょうか。
    オンプレミスであるgitサーバー(gitbucket)なので、git-lfsに対応できません...とコメントしようと思いましたが、知らぬ間に対応されたみたい (https://qiita.com/hikaruworld@github/items/c523d0d994aeee7038d6) ですので、検討いたします。

    キャンセル

  • 2018/05/20 00:33

    >適当なFTP/HTTPサーバーに置くというときは、TAG名等と一致させた名前を配置するということでしょうか。
    Yes。これはGithub Releaseに置くときも。

    >gitbucket
    あれ、
    https://github.com/gitbucket/gitbucket/commit/fd30facd8f561a66123c476f9d252943b7b5a21a
    でGithub Release相当の機能追加されてますよ。

    キャンセル

  • 2018/05/20 01:24 編集

    その手もありましたか。redmine+gitbucketだったので、意識していませんでした。
    保存場所を確認して移行してみようと思います。
    (まるごとリリース物を突っ込むことを考えています。連携できる方法も考えてみます。)
    ※Gitbucketでgithub release相当の機能はv4.21.0でリリースされるようです。(会社の環境は4.1xだった...)

    キャンセル

同じタグがついた質問を見る

  • Git

    1414questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。