とにかく、私は本当に同じレポを使用したいのですが、プロジェクト名は必要なものだからですが、古いコードの歴史を残しつつ、新しいコードベース全体から始めたいと思っています。それは可能ですか? git add
とgit rm
で、通常のgit commit
を使用して、通常のよう
あなたは、変更をコミットすることができます。 Gitはコードをどれだけ変更するかは実際には気にしません。
準備が整うまで、v2開発を独自の分岐として実行することをお勧めします。書き換えは、通常、非常に、非常に、非常に長い時間を要し、まれにすぐには満足できるものではありません。バージョン2で作業している間は、バージョン1の開発およびリリースを継続するオプションを開いたままにしておき、v2が準備できたら、それをメインブランチにマージします。
v2ブランチでの最初のコミットでは、すべてを削除するだけで、すべてを削除することはほとんどありません。したがって、重要なハードウォンの詳細やビジネスロジックを収穫したり、古いコード互換性を維持したい場合は、古いテストを回帰テストとして保存することをお勧めします。また、ユーザーアカウントや課金情報などの永続的なデータがある場合は、そのデータを新しいアプリケーションに移植して、参照用に古いコードとデータスキーマを使用する必要があります。彼らはあなたも解放する羽目になるかもしれない相互に互換性がないなら、バージョン1および2に互換性がない場合
両方のバージョンと並行して1人のユーザーが、実際にはバージョン2を使用するためにすべてを書き換える必要はありませんコンセプトと名前だけで元のものに(そして、おそらく同じ人たちの一部に)関連する全く新しいプロジェクトを本当に作っているのです。 「WhateverYourProjectIsCalled2」という名前の新しいプロジェクトを開始することは、ユーザーにとってもっと丁寧なことかもしれません。 WhateverYourProjectIsCalledを使用してバージョン1を使用するものと、切り替えたい新しいユーザーまたはWhateverYourProjectIsCalled2を使用することができます。
同じ人の多くが両方のプロジェクトに取り組んでいるので、Github組織を使用して、両方を所有し、すべてのものを複製せずに全体の権限を管理することができます。
これに対処するさまざまな方法の例がたくさんあります。 Perl 5はPerl 4の80%の書き換えであったが、わずかな非互換性しか持たず、同じコードベースとコミュニティを保持していた。対照的に、Perl 6はPerlの完全で互換性のない書き換えであり、Perl 5からPerl 5と完全に分離されました。新しいコード、新しいリポジトリ、新しいコミュニティ、さらには新しいライセンスです。
逆に、Python 3では、Python 2ではいくつかの大きな非互換性が導入されましたが、「Python」のままでした。これは、既存のPython 2コードの膨大な量がPython 3では実行されず、その逆もあるため、Pythonコミュニティで混乱を招いていました。それらは相互に互換性がありません。今度はPython 2 and Python 3 are developed and released in parallelとPythonライブラリはどちらをサポートするかを選択する必要があります。共通のコードを実行することができなくなったにもかかわらず、すべて「Python」です。
どのルートを選択するかは、開発しているものによって異なります。ユーザーアプリケーションであれば、おそらく元のリポジトリに保存しておくことができます。ユーザーは新しいバージョンに適応しますが、古いテスト(少なくともblackbox tests以上)を実行して、動作することを確認します。あなたは古いバグを再導入していません。
プラグインAPIやWeb APIのようにプログラミングライブラリやプログラムに依存するものがあれば、それを新しいプロジェクトに分割して、ユーザーに大規模で突然の互換性がないようにする必要があります。
Gitの素晴らしい点は、あなたが1つの戦略を選択した場合、後で気を変えることができることです。ブランチは独自のリポジトリ(履歴あり)に分割することも、独立したリポジトリをブランチにすることもできます。私は、この書き換えがどこかにあることを確かめるまで、ブランチから始めておくことをお勧めします。
最後に、通常、書き換えは失敗します。彼らは私がやってきない多くの理由のために非常に高いリスクです。 「通常、両手で尻を見つけられなかった馬鹿たちが、ここで働いたのは彼らのやり方でした。時にはそれは悪い理由です。時にはそれは良い理由です。時にはそれは良い理由だったが、もはやそれではない。古いシステムを書き換えようとしている開発者は、しばしば考慮しなかった細かい細部がたくさんあることがわかります。
代わりに、refactoring古いコードを段階的に考えてみてください。それはリスクがずっと低く、ビジネスロジックやバグ修正の詳細についての「馬鹿馬鹿めしさ」の知識を保持しているため、古いシステムの詳細をすべて調べて理解する必要があります。 er)とより制御された変更。
新しいブランチ+リベース?しかし、古いリポジトリの名前を変更/移動しないでください。 – Casey
ああ、それも私の考えだった。 GitやGitHubの中でそれを扱う便利な方法があるかどうかはわかりませんでした。 –
ローカルファイルのすべての古いファイルを新しいファイルで削除してコミットできます。 - ブームは古いものを保存し、新しいものを持っています。なぜそれは動作しませんか?必要に応じてバージョン2.0タグを追加することもできます。 – Hogan