1. ホーム
  2. git

[解決済み] Git - シンボリックリンクの扱い方

2023-07-19 12:05:42

質問

gitでシンボリックリンクを処理する正しい方法は何ですか?

私は次のような構造を持っています。

Vendors
  Module A
  Module B
  Module C
App
 Code
   Modules
     Core Module 1
     Core Module 2
     Module A (symlinked to vendors)
     Module B (symlinked to vendors)
     Module C (symlinked to vendors)

アプリケーションのすべてのコア コードを含むメインの App ディレクトリがあります。 さらに、モジュールを含む vendor ディレクトリがあり、これらはメインの app ディレクトリにシンボリックリンクされるため、統合されます。

重要なのは、vendor ディレクトリと main app ディレクトリの両方が、同じリポジトリでバージョン管理されていることです。

したがって、git にシンボリックリンクを保存させ続けるべきか、あるいはシンボリックリンクを無視させる方法を見つけるべきでしょうか?

どのように解決するのですか?

Git は、すべての開発者が使用するオペレーティング・システムがシンボリックリンクをサポートしている限り、問題なく処理することができます。あなたはシンボリックリンクが存在することに依存しているので、あなたの開発環境はすべてシンボリックリンクをサポートしていると仮定します。

何かをgitリポジトリに含めるかどうか(シンボリックリンクかどうか)を決めるには、次のことを考慮してください。

  • それは、リポジトリ内の何らかのツールや他の処理によって生成されたファイルでしょうか?もしそうなら、それを無視して各ユーザーにファイルを生成させ、常に最新版を手に入れられるようにするのが最善です。
  • そのファイルは特定のユーザーの開発環境に特有のものですか、それともすべての環境で使用されるものですか? Emacs のバックアップ ファイルを無視する設定のように、特定のユーザーの環境の癖である場合、それはレポにふさわしくありません。もしそれがすべての開発者が必要とするものであり、かつ/または本番用のアプリケーションを構築するために必要なものであれば、それはリポジトリに入るべきです。

あなたの場合、シンボリックリンクは生成されないようですし、すべての環境で必要なので、リポジトリに置くことは問題ないでしょう。

しかし、リポジトリをクローンする場所に関係なく動作するように、作成するときは、絶対シンボリックリンクではなく、相対シンボリックリンクとして作成することを確認してください。これを行う最も簡単な方法は、Modules ディレクトリにディレクトリを変更し、そこからシンボリックリンクを作成することです。

cd App/Code/Modules
ln -s "../../../Vendors/Module A" "Module A"