問題タブ [branch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tfs - tfs 2008 で別のブランチに保留解除できますか?
私のチームの一部の開発者が、ブランチ A で行った変更を棚上げしたとします。そして、私はブランチ B で作業しています。彼の変更をブランチ B に棚上げ解除できますか? (GUI またはコマンドプロンプトで)
svn - SVN で個々のファイルを分岐するにはどうすればよいですか?
サブバージョンの分岐の概念は、開発を行うリポジトリ全体の [不安定な] フォークを作成することに重点を置いているようです。個々のファイルのブランチを作成するメカニズムはありますか?
ユースケースとして、複数のプラットフォーム固有のソース (*.c) 実装を持つ共通のヘッダー (*.h) ファイルを考えてみてください。このタイプのブランチは永続的なものです。これらのブランチはすべて、時折ブランチをまたがるマージを伴う継続的な開発が見られます。これは、一般に有限の寿命を持つ不安定な開発/安定リリース ブランチとは対照的です。
トランクとすべてのブランチの間で継続的にマージするために不当な量のメンテナンスが発生するため、リポジトリ全体を (安価であろうとなかろうと) ブランチしたくありません。現在、これを簡単にする分岐の概念が異なる ClearCase を使用しています。SVN への移行を検討するよう求められましたが、このパラダイムの違いは重要です。私は、安定したリリース ブランチをカットすることよりも、個々のファイルの代替バージョンを簡単に作成できるようにすることの方がはるかに心配です。
refactoring - 気を失うことなくブランチでリファクタリングする方法は?
私は自分や他の人のコードを常にリファクタリングしています。トランクではなくブランチで作業している場合、特に定期的にトランクにマージしない場合は、非常に面倒なマージが発生することがあります(ブランチのコードはトランクからゆっくりとシフトし、人々がトランクを変更するとIこれをブランチに適用する方法を手動で理解する必要があります)。
私が知っている解決策はどちらかです
- トランクとの間で絶えずマージします-面倒なマージを減らしますが、なぜブランチで作業するのですか?
- 何かをリファクタリングする必要があるときはいつでも、トランクに切り替えて、そこでリファクタリングを行い、ブランチにマージします-リファクタリングごとに環境を切り替える実際のコストは莫大なので、これはあまり実用的ではありません。
職業はなんですか?
svn - オープンソース プロジェクトをフォークするベスト プラクティスは何ですか?
オープンソース プロジェクトをカスタマイズする必要があります。変更は特定の組織向けであり、公開プロジェクトには役立ちません。コードの変更には、組織に不要な機能の無効化 (コードの 5% に影響)、組織の他の機能のカスタマイズ (コードの 20% に影響)、および新しいカスタム機能の追加 (約 10% の新しいコードの追加) が含まれます。
現在のバージョンから始めて、そこからカスタマイズすることができました。ただし、元のプロジェクトは引き続き進歩し、新しい機能が導入されているため、これらの改善を取り入れたいと考えています。
これを管理する最善の方法は何ですか? 現時点では、リリース バージョンが利用可能になったときにしか入手できませんが、元のプロジェクトの Subversion リポジトリへの読み取り専用アクセスがすぐにできるようになるはずです。Subversion リポジトリを使用するのは初めてですが、コードにも使用できるようにしています。
cvs - CVS の機能ブランチ?
この特定のプロジェクトでは CVS を使用することがポリシーによって義務付けられているため、実際には Git などの別のものに切り替えたいのですが、できません。
つまり、私の本当の質問は次のようになります。リリースを行うたびに、CVS で新しいブランチを作成するという慣習があります (タグ付けも行いますが、それは重要ではありません)。これらをバージョン ブランチと呼びます。これにより、特定のバージョンを簡単にチェックアウトし、それにホット フィックスの変更を加えることができます。これがマイナー リリースです。
しかし今、私はいくつかの大規模でリスクの高い変更を予定しており、Git で作業していたら、瞬く間に機能ブランチを作成していたでしょう。しかし、CVS で作業していて、別のプロジェクトでフィーチャー ブランチを作成しようとしたところ、すぐに面倒なことがわかりました。多くのブランチができてしまい、同期されたブランチ、マージが必要なブランチ、使用されなくなったブランチを見失いました。
それでは、クエスチョン マークに少しずつ近づくと、CVS でフィーチャー ブランチを使用することは実現可能でしょうか? それらは面倒すぎて価値がありませんか、それとも最終的にそれらを使用しないことを残念に思うことになりますか? 弾丸をかじってHEADでコーディングを開始し、コーディングプロセスを曲げて、可能な限り目立たない方法で変更を導入する必要がありますか?
svn - post-commit を適切に分岐し、svn でトランクを元に戻すにはどうすればよいですか?
私が決定したコミットがいくつかありますが、実際には、トランク作業よりもブランチ作業の方が多いでしょう。ブランチを作成してトランクを元に戻すにはどうすればよいですか?
現在のトランクをブランチにコピーしてトランクを元に戻すのと同じくらい簡単ですか? それとも、これは後で頭痛の種になりますか?
svn - ソースコード管理戦略 - 分岐、タグ付け、フォークなど - Web アプリ用
この投稿 (ブランチを使用する中規模のプロジェクトでデータベースのリビジョンを管理するにはどうすればよいですか? ) を読んで、ブランチを使用して Web プロジェクトで作業し、開発、ステージング、および運用 (ローカル コピーと共に) にデプロイする最善の方法を考えさせられました。
「リリース」自体はありません。機能が目立つほど大きい場合は、(必要なテストなどの後)ライブにプッシュします。そうでない場合は、いくつかをまとめて、「快適」と感じたらプッシュします。それらは生きています。絶えず変化するサイトはユーザーを少し不安にさせる傾向があるため、目標は月に 1 回か 2 回以上展開しないことです。
これが私たちのやり方で、ちょっともろく感じます (現在は svn を使用していますが、git への切り替えを検討しています):
- 2 つの「ブランチ」 - STAGE の特定のリリースが TRUNK としてマークされている DEV と STAGE
- 開発者は変更ごとに TRUNK のコピーをチェックアウトし、そのブランチを作成します
- 開発者はローカルで作業し、コードを頻繁にチェックインします (投票のように: 早期かつ頻繁に)
- 開発者が完全に壊れていないことに慣れたら、ブランチを DEV にマージし、開発サイトにデプロイします。
- 変更が「終了」するまで、必要に応じて 3 ~ 4 を繰り返します。
- 変更ブランチを STAGING にマージし、ステージ サイトにデプロイします。期待される最終テストを行います。
- 一定期間後、STAGE の特定のリビジョンを TRUNK としてマークし、トランクをライブにプッシュします。
- TRUNK の変更を DEV にマージして同期を維持する
現在、これらのステップのいくつかは非常に複雑であり、実際には実行が非常に困難です (TRUNK -> DEV は常に壊れます)。そのため、もっと良い方法があると想像する必要があります。
考え?
svn - Subversion: 古い機能ブランチの削除と保持
標準レイアウト、つまりトランク/とブランチ/(およびタグ/)のSubversionリポジトリがあります。より大きな変更に取り組んでいるときは、機能ブランチが使用され、定期的にトランクと同期され、後でトランクに再統合されます (現在は 1.5 を使用)。かなり標準的なもの。
私が疑問に思っているのは、そのような機能ブランチが完成してマージされたら、そのままにしておくべきか、削除するべきかということです。Subversion book では、ブランチを削除するのが一般的であると示唆しているように見えることがありますが、ブランチを保持しているオープン ソース プロジェクトも数多く見てきました。
また、ブランチを削除するとどのブランチが存在したかを追跡するのがどのように難しくなるかについても少し心配です。特に、重複する可能性のある名前がシナリオに入った場合 (たとえば、2 回検索リファクタリングした場合)、それらのコミット履歴がリポジトリの深さのどこかで消えてしまいます。等
一方、ブランチは非常に頻繁に使用されており、特に現在の 1.5 では、現在取り組んでいるブランチを見つけるために非アクティブなブランチの膨大なリストを調べなくて済むという考えが気に入っています。
私が見逃している長所と短所は何ですか? 人々は何をしていますか?
git - ローカル ブランチが追跡しているリモート ブランチを見つける
参照:
どの Git ブランチがどのリモート/アップストリーム ブランチを追跡しているかを確認するにはどうすればよいですか?
ローカル ブランチが追跡しているリモート ブランチを確認するにはどうすればよいですか?
出力を解析する必要がgit configありますか、それともこれを行うコマンドはありますか?
branch - チェックアウト時にgit svnにブランチファイルを「再配置」させることは可能ですか?
私たちの svn リポジトリには、サブツリーから分岐した多くの分岐があります。作業コピーの正しい場所でそのサブツリーをチェックアウトできるため、これは svn で問題なく動作します。ただし、git を使用して同じブランチをチェックアウトすると、ブランチのサブツリーのみを含む作業コピーが取得されます。git でブランチを再配置して、トランクでもブランチでも作業コピーの構造が同じになるようにすることはできますか?
私たちの svn の実践は、常にツリー全体で作業するという git の哲学と衝突していることに気付きました。人々はこれにどのように対処しますか?