2

私はmercurialとtortoiseが初めてで、サブプロジェクトの操作方法を理解しようとしていくつか問題があります。

UARTSPIADCという 3 つのフォルダーがあります。これらのフォルダには、マイクロコントローラ ファミリの uart、spi、および adc を使用するためのコードが含まれています。これらのコードはどのプロジェクトにも関連付けられておらず、逆に、このコードは任意のプロジェクトで使用できるように個別に設計および開発されています。そのため、それぞれのリポジトリを作成し、hg でバージョン管理しています。

しかし最近、 ADCUARTを使用する「プロジェクト A」というプロジェクトを開始することにしました。「プロジェクト A」フォルダを作成し、main.c ファイルを作成し、最後に「プロジェクト A」フォルダにリポジトリを作成し、main.c ファイルを追加してコミットします。

ここでの私の問題は、フォルダーを手動でコピーして貼り付けることなく、UART と ADC コードを「プロジェクト A」に何らかの方法で「追加」または「リンク」したいということです。つまり、UART と ADC コードを独立したサブプロジェクトとして処理します。 「プロジェクト A」から、UART と ADC の最新バージョンを「メイン」プロジェクトにコピーするために hg を使用します。次に、たとえば UART コードで変更が必要な場合は、変更が UART コードで行われ、変更を UART プロジェクトにコミットし、UART コードが追加またはリンクされているすべてのプロジェクト内の最後のバージョンに「更新」します。

読みました:

Mercurial - リポジトリ フォルダ内にないプロジェクトを追加

Mercurial を使用する場合、すべてのファイルを「リポジトリ フォルダ」に配置する必要がありますか?

http://hginit.com/index.html

初心者のための Mercurial: 決定的な実践ガイド

そして、私は私の質問に対する答えを見つけることができません。サブプロジェクトに関する非常に端正でわかりやすいチュートリアルを見つけましたが、あまり役に立ちませんでした ( http://tomtech999.wordpress.com/2011/12/17/getting-started-with-mercurial-subrepositories/ )

従うべき一連の手順、またはこれを達成するためのチュートリアルへのリンクを教えていただけますか?

よろしく!

4

2 に答える 2

0

質問する前に調査した内容を指定していただきありがとうございます。最近はさわやかです。

バージョン管理ライブラリについて間違って考えていると思います。この答えがあなたの考えているモデルに合っているかどうかを確認してください。

ライブラリ UART、SPI、および ADC は、強い意味での「ライブラリ」のように見えます。これらは、ProjectA のような呼び出しプログラムにサービスを提供します。これらの同じ機能を変更せずに ProjectB–ProjectZ に提供することもできます。

その場合、ライブラリを別のリポジトリに維持するのが正しいことです。UART がレジスタを変更するか、UART ライブラリにバグを見つけた場合、UART ライブラリのすべてのユーザーに変更を反映させたいと思います。その方法は、UART ライブラリ用の単一の決定的なリポジトリを用意することです。そのリポジトリは、システムに適した UART.a または UART.so または UART.dll を生成する必要があります。ライブラリは、リンク時に ProjectA の一部になります。別の方法として、関連付けられていない UART コードのコピーを複数のプロジェクト リポジトリに個別に配置すると、エラーが発生する可能性があります。

ライブラリの生成と ProjectA とのリンクは、すべてのコードを 1 つのリポジトリに置くのとほぼ同じくらい簡単だとは言いませんが、これはmake複数のディレクトリにまたがる制限です (これは非常によく知られている欠陥です)。ただし、リポジトリの分離は、DVCS の観点からは理にかなっているようです。

于 2014-05-26T20:33:26.333 に答える
0

msw のように、あなたがすでに読んだことを説明してくれるのが大好きです! 読むことをお勧めします

  • Mercurial Kick Start - Subrepositories — 私の同僚がサブリポジトリについて書いたガイド。
  • 強くカップリングされたサブリポジトリ— 強くカップリングされたサブコンポーネントで発生する可能性があるいくつかの問題を説明しようとして、私が書いた回答です。あなたの世界にどのようなビルド ツールがあるかはわかりませんが、可能であれば、コンポーネント間の依存関係を管理するツールを使用する必要があります。
  • サブレポの同期維持— サーバー側でサブレポの同期を維持することに関する別の回答。
  • Mercurial ウィキhg help subrepos.
于 2014-05-27T07:47:15.377 に答える