1

この男がSVNで行うのと同様のことを達成する方法はありますか? Subversionリポジトリを新しいプロジェクトのテンプレートとして使用するにはどうすればよいですか?

基本的なASP.NETMVCプロジェクトがあります。これは、基本的に単純なCMSサイトであり、新しいサイトのベースになっています。

リポジトリを毎回新しいサイトに複製する必要があるという考えは好きではありません。それは、同じリポジトリの複数のコピーを異なる場所に作成するためです。これは、私には十分にクリーンではないようです。

ブランチは私の問題の解決策ですか?新しいサイト用に新しいブランチを作成する必要がありますか?そうすれば、両方の方法で変更を加えることができます。これは、私が非常に望んでいる柔軟性であり、複数のプロジェクトをサポートしながら、すべてを1つのリポジトリに保持します。

(バグが修正される新しいサイトで見つかる場合があり、修正をソースサイトに戻したい場合やその逆の場合もあります)

両方のGit/Hgに基づいて回答してください。私は両方を使用していますが、十分に類似していると思います。

4

3 に答える 3

3

@hydeが言うように、クローン作成はDVCSの仕組みの一種なので、実際には問題はないはずです。

ただし、たとえば、サイトの変更を誤ってテンプレートにプッシュバックできないことに関心がある場合は、新しいリポジトリを初期化してpull、テンプレートから他のことを行う前に行うことができます(Mercurialの観点から考えていますここでは、Gitでも同様のことが可能だと思います):

$ hg init new_project
$ cd new_project
$ hg pull -u ../template
$ hg push
comparing with default-push
abort: repository default-push not found!

このシーケンスにより、最新のテンプレート(すべてのチェンジセットを含む)で更新された新しいリポジトリが作成されますが、これは直接のクローンではないため、誤って変更をテンプレートにプッシュして戻すことはできません。ただし、最初のチェンジセットは同じであるため、新しいプロジェクトでテンプレートに有用な変更を加えた場合でも、宛先を指定することでテンプレートをプッシュバックできます。

$ hg push ../template
pushing to ../template
searching for changes
no changes found

この方法でテンプレートから新しいリポジトリを作成するということは、リポジトリ自体が「リンク」されていない場合でも、最近のテンプレートの変更を簡単に取り込むことができることを意味します。

于 2013-02-01T13:32:09.833 に答える
2

枝はあなたを助けることができるものではないと思います。非常に基本的な時代から、分岐は同じプロジェクトで作業するために使用されますが、異なるモード(メンテナンス、次のバージョン、新機能の追加など)で、新しいプロジェクトごとに新しい分岐を作成することは、概念的な観点からは間違っています。

gitを使用している場合は、テンプレートプロジェクトを作成しない理由をgithubに保存し、新しいプロジェクトを開始するたびに、マシン上でフォークしてから、新しいリポジトリを作成して新しいサイトをプッシュします。Thinkは標準的なアプローチです。

そして、その目的のために高度なものを作成したい場合は、新しいプロジェクトを開始するたびに必要なすべてのものをインストールするWindowsインストーラーを作成することをお勧めします。

于 2013-02-01T11:52:59.837 に答える
1

リポジトリのクローンを作成するだけです。異なるデフォルトブランチを持つ複数のクローンを避けたい場合は、そのサイトの「デフォルトブランチ」となるサイト固有のブランチに変更を加えます。次に、プルしてマージすることにより、「テンプレート」コードを簡単に更新することもできます。

テンプレートから変更を適用する(簡単な)オプションなしでクリーンスタートが必要な場合は、リポジトリコンテンツのスナップショットを取得し、それらから新しいリポジトリを初期化します。


リポジトリを毎回新しいサイトに複製する必要があるという考えは好きではありません。それは、同じリポジトリの複数のコピーを異なる場所に作成するためです。これは、私には十分にクリーンではないようです。

まあ、それは分散バージョン管理システムが行うことです。技術的に言えば、中央リポジトリはありません。「中央リポジトリ」とは、単に特定のクローンを意味し、関係するすべての人が、変更を共有するために使用することに多かれ少なかれ同意しています。また、それは完全にDVCSユーザー、ユーザーが中央リポジトリにプッシュするもの、およびクローンにのみ保持するものに依存します。

于 2013-02-01T11:51:45.363 に答える