2012-04-07 6 views
1

私は「How To Write Go Code」チュートリアルを読んでいます。安定したワークフローをどのようにセットアップできるか疑問に思っています。go依存パッケージを使用した再現可能なリリース

当然、私のコードはソースコントロールの下にあります。今度は次のことができます:

  • 私のプロジェクトの実行可能ファイルをビルドし、特定のGitバージョンで実行ファイルをビルドするようにします。
  • 私のプロジェクトがすべてのコミットでアクティブになるように連続ビルドを実行します。私は、継続的なビルドが何であれ、私のワークステーションで再現可能であることを確認する必要があります。
  • 私のプロジェクトのリリースを作成します。同じコードバージョンのgitバージョンから再度リリースすると、リリースを再作成できることを知る必要があります。

goは「go get」ツールを提供しますが、ここでは混乱します。これをサポートすべきツール「go get」は、依存パッケージのソース管理リポジトリを設定します。これは私に次の問題を与える:

  1. 自分のソース管理下に依存パッケージを置くことができません。つまり、私と私のコラボレーター、私と私の継続的なビルドシステムの間に何らかの環境差がある場合、私たちはそれらの違いを理解するのに苦労します。
  2. ネットワークがダウンしている場合、自分のコードを最初から構築することはできません。あるいは、私の継続的なビルドシステムは、それを別の方法で入れるために、リリースをビルドするたびに、すべての外部サーバーにヒットする必要があります。これは壊れやすいかもしれないし、私が外の世界に知らせたいと思う何かではないかもしれない。
  3. Goはパッケージバージョンと基本言語のバージョンを同期させるための規約を定義していますが、パッケージ作成者がその規約に従うという保証はありません。そうでない場合は、クリーンな作業領域が壊れているかもしれない任意のリリースを取り上げます。
  4. 私が依存しているプロジェクトが放棄された場合、自分のプログラムを構築する能力を失うことがあります。

私は依存プロジェクトのコードを手動でインポートし、「go get」を使用しないで回避することができますが、その言語用に特別に設計され宣伝されているツールは避けています。

提案がありますか?何か不足していますか?

答えて

1

は、ソースバージョンの分散バージョン管理システムを使用しています。レポのローカルコピーを使用します。あなたの懸念をここで取り上げようとします。

  1. が必要な場合は、確実にローカルリポジトリを変更してコミットできます。
  2. go getは、明示的に更新するよう指示しない限り、最初に構築したローカルリポジトリを使用します。
  3. go getはまだそこに残るリポジトリを吹き飛ばすことはありません。 goゲットによって理解されているすべてのソース 制御システムは分散ソース制御システムなので、プロジェクトのフォークを自分自身に任せておくことができない理由はありません。
関連する問題