2017-12-02 10 views
1

TLによって無視されたファイルを追加する; DRは:私はサブモジュールは、いくつかのファイルを無視したいが、私はこれは親プロジェクトによって追跡され、それらのファイルgitのサブモジュール

詳細

をしたいですUnityプロジェクトのために。サブモジュールに頻繁に使用していたコードやアセットを追加したいので、プロジェクト間で簡単に共有できます。

Unityは、各アセットに沿って保存された ".meta"ファイルを追跡する必要があるという問題があります。また、これらの.metaファイルはプロジェクトごとに一意であるため、サブモジュールで共有することはできません。だから、

、私は計画通り

これまでのところ、物事が行くファイルを.META追跡することはないことを言って、サブモジュールに.gitignoreファイルを追加しました。サブモジュールをプロジェクトに追加しました。プロジェクトのメタファイルは正しく無視されます。しかし、私はそれらをメインのgitリポジトリにコミットする必要がありますが、サブモジュール下のものは無視されているので、メタファイルをメインリポジトリに追加することはできません。

例:

Assets 
L Game Files 
    L some_asset.jpg 
    L some_asset.jpg.meta 
L Submodule  
    L shared_asset.jpg.meta 

そして、サブモジュール:このシナリオでは

Assets 
L Game Files 
    L some_asset.jpg 
    L some_asset.jpg.meta 
L Submodule  
    L shared_asset.jpg 
    L shared_asset.jpg.meta 

、私はトラックにメインのgitリポジトリをしたい

shared_asset.jpg 

私はウェブをコーマ私は別の.gitignoreの組み合わせを試しましたが、何も動作しません。私はこれがおそらく不可能だと思うようになっていますが、もし誰かが何らかの考えを持っていれば、私は大いに感謝しています!

ありがとうございます!

答えて

1

概要Export Unity packages代わりにGitのサブモジュールを使用します。

あなたの親プロジェクトで「無視されている」理由は、gitignoreのためではなく、サブモジュールが単にリポジトリのコミットを参照するものであり、リポジトリのフォークではないからです。つまり、サブモジュールをプロジェクト内のディレクトリとして使用する場合は、ディレクトリ全体が異なるリポジトリにあるため、サブモジュールリポジトリにコミットせずにメタファイルを追加することはできません。 Unityプロジェクトごとにサブモジュールのフォークを作成することはできますが、それはすぐに面倒で不便になります。

代わりに、カスタムUnityパッケージを使用する必要があります。サブモジュールリポジトリをUnityでパッケージとしてエクスポートし、新しいUnityプロジェクトを使用するときにパッケージを開きます。Unityはファイルを新しいプロジェクトにコピーし、適切なメタファイルを追加します。新しいプロジェクトの資産を上流の資産で上書きする場合は、将来、パッケージの更新バージョンを再インポートすることができます。 UnityマニュアルのExporting Packagesを参照してください。

+0

サブモジュール/共有資産が既に完全に成熟している場合、それは素晴らしいでしょう。しかし、私はプロジェクトの作業中に修正と更新を受けるため、2つのプロジェクト(ゲームと共有アセット)を同時に更新することは不便です。 アドバイスをいただきありがとうございます。とにかく終わりにそのようなことをしなければならないかもしれません:) – Arkaid

+0

したがって、これらの2つのプロジェクトとその資産を同時に処理する必要がありますか?最初に資産を完成させてから、プロジェクトを開発するか、一時的にそれらを2つのシーンで1つのプロジェクトに持ち込むことができますか? –

0

1つのトリックは、あなたのサブモジュールレポcontent filter driverに(.gitattributes declarationに)登録することです。

smudge ( "Pro Git book" から "Customizing Git - Git Attributes" からの画像、)

smudgeスクリプト、*.jpgに関連付けるには、(自動的にgit chekcoutに)親の事前合意に見ることによって、メタファイルを生成します親レポに(../meta/myfile.jpg.metaのような)パス(および追跡)があります。 生成された実際のメタファイルは無視されたままです(.gitignoreによって)。
これは、サブモジュールの実際の作業ツリーが「ダーティ」にならないことを意味します。
親リポジトリは、これらのメタファイルを追跡します。

git smudge/clean filter between branches」の完全な例を参照してください。

関連する問題