私はGithubでやや人気のあるオープンソースプロジェクトを使用しており、majorのオーバーホールを行う準備をしています-完全に異なるディレクトリ構造、大幅に異なるバージョンの主要コンポーネント、そして単純に勝つ多くのファイルもう存在しません。
完全に新しいリポジトリを作成したくありません。Githubリポジトリに付属しているすべての問題、スター、wikiページ、その他の機能が失われるからです。一方、新しいdev
ブランチを開始するのは理想的とは言えません。古いバージョンの追跡されていないファイルをたくさん.gitignore
して、 2つのバージョン。
私が検討した他のアイデア:
そのような大きな改訂を行うための最良のアプローチは何ですか?
ブランチを使用します。これはまさにブランチが設計されている目的です。
一方、2つのバージョン間を簡単に切り替えるには、古いバージョンの多くの追跡されていないファイルを.gitignoreする必要があるため、新しいdevブランチで開始するのは理想的とは言えません。
1つの可能性は、GitHubリポジトリにブランチを作成することですが、実際にコードを操作するときに、そのブランチを別の作業ディレクトリに複製します。そうすることで、あるバージョンの追跡されていないファイルが、他のバージョンの作業ディレクトリに置かれなくなります。構成ファイルに互換性がない完全な書き換えである場合、これは適切な方法です。
ただし、両方のブランチで.gitignoreにいくつかの追加の行を追加して、それらを簡単に切り替えられるようにすることは、かなり小さなコストです。あるバージョンから別のバージョンにgitチェックアウトできるようにしたい場合、これはかなり良い方法です。
たぶん、2つのフォルダold
とnew
を並べて使用するだけかもしれません。新しいバージョンは完全にソースコードと互換性がないように見えるため、いずれにしても有用なマージ結果はありません。ある時点で古いコードを削除し、今後は新しいコードを使用するように思えます。
空の孤立したブランチを作成する
これは2つのフォルダーソリューションに非常に似ていますが、両方のバージョンを並べて使用することを示しました。
おそらく、2つの作業コピーを用意するだけで、Orphanブランチも機能させることができます。 2つの「エポック」のそれぞれを個別のフォルダーにチェックアウトします。
私が言ったことは、Gitコンテキストで意味をなすことを願っています。私は、そのような「ローテク」ソリューションがより一般的であるSubversionの経験が豊富です。とにかく、SVNではブランチは単なるフォルダです。