4

Visual Studio 2010とgit(git svn)を使用しています。私の同僚は、Ankhsvnプラグインで純粋なsvnを使用しています。

Gitソース管理プロバイダーを有効にしてファイルを開こうとすると、VisualStudionは次のように文句を言います。

ソース管理プラグイン
アクティブなソリューションまたはプロジェクトは、選択したものとは異なるソース管理プラグインによって制御されます。ソース管理のプラグインを変更すると、アクティブなソリューションまたはプロジェクトが閉じられます。
続けたいですか?

[はい]をクリックすると、空のソリューションが開きます。[いいえ]をクリックすると、ソリューションアイテムの横にあるすべてのgit固有のアイコンが表示されず(ソリューションエクスプローラーにブランチ名が表示されます)、ソリューションを開くたびにソース管理プラグインについてのプロンプトが表示されます。

同僚がソリューションを作成したsvnリポジトリのクローンを作成すると、slnファイルには次のものが含まれます。

GlobalSection(SubversionScc)= preSolution Svn
-Managed = True
Manager = AnkhSVN-VisualStudioEndGlobalSectionのSubversionサポート

このセクションを削除しました。Gitソース管理プロバイダーをアクティブにすると問題なくソリューションが開きますが、Ankhsvnプロバイダーを選択すると文句が表示されます。状況は逆になります。

プル中に.slnファイルのこの部分を削除し(git svn fetch)、コミット時に追加するようにgitに指示したいと思います(git svn dcommit)。これはgitattributesとその方法で可能ですか?

編集:

追加しました

solutionname.sln filter = ankhsvn

$ GIT_DIR / info/attributesへ

[filter "ankhsvn"]
  clean=sed '/^Global$/ r ../ankhsvnsection '
  smudge=sed '/GlobalSection(SubversionScc)/,/EndGlobalSection/d '

私の.git/configファイルに。

ankhsvnsectionには、スマッジ操作によって削除されるセクションが含まれています。何もしていないようです!

4

1 に答える 1

10

Windowsで正確に行う方法はわかりませんが、*nixで行う方法は知っています。

gitの「smudge」フィルターを使用してgitでチェックアウトすると、ファイルからこれらの行を削除するsed / bashスクリプト(myscriptと呼ばれる)を作成します。

したがって、「$ GIT_DIR / info/attributes」に次を追加します。

{sln filename} filter=myfilter

そして、「$ GIT_DIR/config」ファイルでフィルターのスマッジ部分を定義します。

[filter "myfilter"]
    smudge={path to myscript}

Linuxの場合は、次のようにsedを直接呼び出すこともできます。

[filter "myfilter"]
    smudge=sed '/GlobalSection(SubversionScc)/,/EndGlobalSection/ d'

これはおそらく、gitbashを使用してWindowsで引き継ぐことができるものです。

ファイルへの変更をチェックインするときは、「汚れた」バージョンをチェックインするので注意してください。このための「クリーンな」フィルターを定義して、svnステートメントを再度追加することができます。

于 2011-03-11T12:10:56.067 に答える