gitがシンボリックリンクをファイルとして扱うようにするには?

gitがシンボリックリンクをファイルとして扱うようにするには?

非常に具体的なユースケースがあります。ファイルをチェックインするときに使用するDesignSyncバージョン管理システムは、そのファイルをリモートリポジトリへのシンボリックリンクに置き換えます。

チェックイン前に変更をバージョン管理するためにローカルでgitを使用しているので、ファイルをシンボリックリンクに置き換えるまたはその逆の場合、ファイル/シンボリックリンクの内容が同じ限りファイル変更と見なされます。

これを達成する方法はありますか?

答え1

ここでは、シンボリックリンクアプローチを排除する以外に、「美しい」方法がないと思います。 (これがDesignSyncの機能であるかどうかはわかりません。Dassaultがそのようにエラーをチェックすることを望むかもしれません)。そうだった。

あなた必要実際のファイルにはgitを使用してください。そうしないと、項目を変更しても変更は表示されません。あなた必要DesignSyncsシンボリックリンクを尊重してください。

私は3つの方法を見ましたが、最初の方法を試してから除外できます。

  • .gitattributesを使用すると、コミットとチェックアウトのシンボリックリンクをシンボリックリンクファイルに置き換えるか、逆に置き換える「taint」および「clean」フィルタを持つことができます。 .gitattributesでシンボリックリンクが特別に処理されないため、機能しません。
  • すべてのシンボリックリンクをDesignSyncが管理する「アップストリーム」からコピーしたソースファイルに置き換える事前コミットスクリプトを作成できます。
  • DesignSyncリポジトリの2番目の「ビュー」を提供するFUSEファイルシステムを作成できます。ここで、シンボリックリンクはシンボリックリンクされた物理ファイルに置き換えられます。 .gitリポジトリディレクトリにマウントをバインドし、そのようにgitからファイルを管理できます。

どちらの方法も苦痛ではありません。正直に選ぶべきだ一つ使い捨てソース制御システムは私を不安にさせます。

正直なところ、最も簡単な方法はおそらく特別な作業をしないことです。ローカルのgitリポジトリを変更せずにそのままにして、変更されたファイルをDesignSyncに確認したいときはいつでも別々のチェックアウトを実行することです。 Gitはどこでもリポジトリを確認できます! DesignSyncの変更をGitリポジトリにインポートする必要があるたびに、cp -L新しいDesignSyncをGitリポジトリとして確認するように正直に言うでしょう(symlinkに従う)。

関連情報