5

私はさまざまなマシンでvimを使用しており、構成をそれらの間で同期させたいので、病原体を使用してさまざまなvimプラグインをインストールし、たとえばここで説明されているようにgitサブモジュールとして保持するというよく知られたアプローチを試しました。

現在、私の.vimフォルダーは git リポジトリであり、サブモジュールとして各フォルダーが含まれています.vim/bundle。そのメイン リポジトリを bitbucket にアップロードし、他のマシンからクローンを作成しました。その後、必要に応じてすべてのリポジトリで同じ構成を取得しましたgit submodule initgit submodule update

これらのプラグインの一部をカスタマイズする必要があるときに問題が発生します。たとえば、一部のサブモジュールは単なる vim カラースキームです。コメントの色を変更したいとします。そうするための適切な方法はどれですか?

いくつかのアイデアが頭に浮かびました:

  1. 私が直接変更した場合.vim/bundle/vim-github-colorscheme/colors(たとえば)、私の知る限り、それらの変更をメインvim-github-colorschemeリポジトリにプッシュする必要がありますが、それはできず、とにかくばかげています。私のカスタマイズは本質的に非公開です。しかし、サブモジュール リポジトリと同期しないと、それらの変更は他のマシンからは見えません。
  2. 独自のカラースキームのカスタマイズを に保持する.vim/colorsと、これらの変更はメイン リポジトリの一部になり、マシン間で簡単に共有できますが、これは病原体の「バンドル」哲学を破ります。さらに、この方法で他の種類のカスタマイズを実行する方法が明確ではありません (たとえば、snipMate の一部のスニペットを変更したり、プラグインのコードを変更したりするなど)。
  3. プラグインのプライベート フォークを作成し、それを bitbucket にアップロードして、元のモジュールの代わりにサブモジュールとして使用する必要がありますか? このようにして、少なくとも1.のアプローチを適切に行うことができましたが、良いオプションとは思えません。特に、プラグインをカスタマイズする必要があるかどうかが事前にわからないため、「念のため」インストールする新しい vim プラグインごとにフォークを作成する必要があります。
  4. バンドルのコードを単一の git リポジトリの下に保持できます。つまり、サブモジュールをまったく使用しません。これにより、それらを自由に変更し、変更を bitbucket リポジトリと同期し、単一の .xml ですべてのマシンにデプロイできますgit pull。ただし、この方法では、プラグインの元のソースに変更が加えられると、それを自分の変更とマージするのが難しくなります。

私はアイデアを使い果たしました.上記のすべては、何らかの理由で私には間違っているようです. git と病原体を使用する人々は、このシナリオをどのように管理していますか?

4

2 に答える 2

1

別の解決策があります。Git のサブツリー マージを使用すると、すべてのプラグインの公式リポジトリのコピーとそれぞれのブランチを取得できます。次に、ブランチの 1 つにそれらがすべて一緒に存在し、プラグインを好きなだけ編集できます。更新する場合は、各プラグイン ブランチをチェックアウトして更新し、すべてのブランチにマージして戻します。住む。

プラグインへの変更は、期待どおりにマージされます。

すべての柔軟性を提供し、問題を解決しますが、設定するのは少し面倒で、最新の状態に保つのは面倒です。

于 2013-11-21T11:44:02.537 に答える