web-dev-qa-db-ja.com

Gitリポジトリでより多くのプログラミング言語でプロジェクトを整理するにはどうすればよいですか?

仕事ではJavaを使用していますが、他のプログラミング言語をPythonまたはClojureとして学習する予定です。

私は1つのプロジェクトをJavaでコーディングし、勉強中にPythonまたはClojureで同じ機能をコーディングします。

それは仕事上で個人的な目標による効果的な価値のないプロジェクトになるので、あなたはそれがより良いと思いますか:

  1. 元のプロジェクトをJavaで「翻訳」するすべての言語に対して1つのリポジトリを作成する方法それはこの構造です:

    • / indipendentRepo1/ProjectJava
    • / indipendentRepo2/ProjectClojure
    • / indipendentRepo3/ProjectPython
  2. このプロジェクト全体で1つのリポジトリを作成し、すべての言語のブランチを開始するにはどうすればよいですか。それがこの構造です

    • / singleRepo/branch/ProjectJava
    • / singleRepo/branch/ProjectClojure
    • / singleRepo/branch/ProjectPython

Gitの「公式」ガイドラインを探しましたが、何も見つかりませんでした。

3
alepuzio

これは非常に個人的なものであり、コードの保守スタイルとコードリポジトリの操作方法によって異なります。

次に、推奨される「ベストプラクティス」がありますが、これにはかなりの理由があります。

あなたはどちらのアプローチも行うことができ、あなたが述べたように、これは個人的なプロジェクトであり、他の人が貢献しないという意味で「間違っている」ことはありません。しかし、コードリポジトリが提供するサービスを検討してください。「今日の状態を保存してください。いつかはその状態に戻したいと思うかもしれません」...

まず、リポジトリにコミットすると、「私は変更を加えたので、これが変更されました。他の影響を受けた/追加された/なくなった」ということです。したがって、1つの言語でプロジェクトを変更した場合、他の言語が変更されていなくても、リポジトリではすべてのプロジェクトを一度に保持して履歴がすべてのプロジェクトに対して意味的に変更を伝えます。コミット履歴を使用してアクティビティを追跡している場合、プロジェクトが別々のブランチにある場合でも、プロジェクトを分離するのは難しくなります。

同じリポジトリで別々のプロジェクトを維持することを検討する唯一の方法は、すべてのプロジェクトにわたって同じ機能の実装を一緒に追跡したい場合ですが、この場合、リポジトリはそれを強制するのに役立ちません。現在のブランチで何か新しいことに取り組む前に、1つの言語でコミットした機能を次の言語に進んで実装します。

次に、ブランチの目的を検討します。現在機能しているソフトウェアを壊すことなく何かを試すことができます。例2でのブランチの使用はこれに反しています。簡単に回復できますが、後の時点でブランチJava-feature-Yを他のプロジェクトClojureではなくブランチProjectClojureにマージしようとすると、信じられないほどイライラします。なぜなら、あなたが寝坊して昨夜遅くに作業したブランチを忘れたからです。 ;-)

これは私の個人的な経験ですが、Gitリポジトリで作業を始めて以来、Gitリポジトリごとに複数のプロジェクトを経験したことはありません。まだSubversionを使用していますが、最初は同じリポジトリに複数のプロジェクトがありました。

3
Todor Todorov

同じプロジェクトの場合は、同じリポジトリにすべての「バージョン」(異なる言語で)を置くと便利です。これにより、各バージョン(言語ごとのメインリポジトリのサブディレクトリ)での変更を簡単に追跡できるようになります。 gitの意味での分岐ではないと思います)。

たとえば、機能Xを実装する場合、言語L1、L2、およびL3で機能Xに対して単一のコミットを実行できます。

単一のリポジトリーにより、クローン作成、移動、バックアップなどの作業も簡単になります…

2
Patrick Mevzek