web-dev-qa-db-ja.com

オープンソースプロジェクトの大規模なオーバーホールをgitで管理するにはどうすればよいですか?

私はGithubでやや人気のあるオープンソースプロジェクトを使用しており、majorのオーバーホールを行う準備をしています-完全に異なるディレクトリ構造、大幅に異なるバージョンの主要コンポーネント、そして単純に勝つ多くのファイルもう存在しません。

完全に新しいリポジトリを作成したくありません。Githubリポジトリに付属しているすべての問題、スター、wikiページ、その他の機能が失われるからです。一方、新しいdevブランチを開始するのは理想的とは言えません。古いバージョンの追跡されていないファイルをたくさん.gitignoreして、 2つのバージョン。

私が検討した他のアイデア:

  • 新しいバージョンの空のOrphanブランチを作成します。
  • 現在のバージョンを新しいレポに「フォーク」し、新しいレポで開発し、リリースの準備ができたら、そのフォークを元のレポにマージします(これは可能ですか?)

そのような大きな改訂を行うための最良のアプローチは何ですか?

5
alexw

ブランチを使用します。これはまさにブランチが設計されている目的です。

一方、2つのバージョン間を簡単に切り替えるには、古いバージョンの多くの追跡されていないファイルを.gitignoreする必要があるため、新しいdevブランチで開始するのは理想的とは言えません。

1つの可能性は、GitHubリポジトリにブランチを作成することですが、実際にコードを操作するときに、そのブランチを別の作業ディレクトリに複製します。そうすることで、あるバージョンの追跡されていないファイルが、他のバージョンの作業ディレクトリに置かれなくなります。構成ファイルに互換性がない完全な書き換えである場合、これは適切な方法です。

ただし、両方のブランチで.gitignoreにいくつかの追加の行を追加して、それらを簡単に切り替えられるようにすることは、かなり小さなコストです。あるバージョンから別のバージョンにgitチェックアウトできるようにしたい場合、これはかなり良い方法です。

5
Winston Ewert

たぶん、2つのフォルダoldnewを並べて使用するだけかもしれません。新しいバージョンは完全にソースコードと互換性がないように見えるため、いずれにしても有用なマージ結果はありません。ある時点で古いコードを削除し、今後は新しいコードを使用するように思えます。


空の孤立したブランチを作成する

これは2つのフォルダーソリューションに非常に似ていますが、両方のバージョンを並べて使用することを示しました。

おそらく、2つの作業コピーを用意するだけで、Orphanブランチも機能させることができます。 2つの「エポック」のそれぞれを個別のフォルダーにチェックアウトします。

私が言ったことは、Gitコンテキストで意味をなすことを願っています。私は、そのような「ローテク」ソリューションがより一般的であるSubversionの経験が豊富です。とにかく、SVNではブランチは単なるフォルダです。

1
usr