水銀パッチキューのユースケース
-
29-09-2019 - |
質問
次の場合には水銀パッチを使用します。-
- リモートリポジトリから引っ張って、顕著なコミットされていない変更が必要な場合. 。次に、単にパッチを作成し、QPOPを作成し、リモートリポジトリから引っ張ってから、パッチを再度インポートします。
- レビューボードにパッチをアップロードする必要がある場合. 。単にパッチを作成してアップロードします。
水銀パッチキューを他にどのように使用していますか?私はそれが非常に強力な水銀拡張であり、私はそれを最大限の可能性に使用していないと感じています。
解決
水銀ウィキには 良いセクション ユースケースについて:
要約すれば:
- 作業コピーの現在の状態を保存して、後で簡単に戻すことができます
- 「もつれた作業コピー」の防止 - 変更の途中で他の何かを変えたい場合
- あなたがプッシュする直前に「歴史」を見ることができるように、可変で再配置可能なコミットを提供します。
他のヒント
これには、マーキュリアルパッチは本当に必要ありません。引っ張ったときに顕著なコミットされていない変更がある場合、それらは先端とマージされます。
例:
C:\>hg init db
C:\>cd db
C:\db>echo >file1
C:\db>echo >file2
C:\db>echo >file3
C:\db>hg ci -Am codebase # Create a code base with 3 files.
adding file1
adding file2
adding file3
C:\db>echo a change >>file2 # Outstanding change to file2.
C:\db>hg st
M file2
この時点で、データベースをクローンして、引き出すことができる変更を犯します。
C:\db>hg clone . \db2
updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\db>cd \db2
C:\db2>echo a change >>file3
C:\db2>hg ci -m "file3 change" # Commit a change to file3.
元のデータベースに戻って...
C:\db2>cd \db
C:\db>hg st # Still have uncommitted change
M file2
C:\db>hg pull \db2
pulling from \db2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
C:\db>hg st # We have the new history, but haven't updated.
M file2 # file2 has uncommitted change.
C:\db>type file3 # file3 is unchanged.
ECHO is on.
C:\db>hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\db>hg st # We've updated, and file2 *still* has
M file2 # uncommitted change.
C:\db>type file2
ECHO is on.
a change
C:\db>type file3 # But file3 now has committed change
ECHO is on. # that was pulled.
a change
道徳的なことは、コミットされていない変更があっても、引っ張って更新することができます。マージ競合がある場合、通常のマージの動作も同様に発生します。
パッチエクスポート用 hg export <rev>
レビューのためにパッチをエクスポートします。
Bitbucketでパッチキューを作成すると、右ペインのパッチキューの一般的な使用の一部がリストされています。彼らの説明は非常に良く、あなたの質問に直接答えてください。それからの引用は以下にあります。
パッチキューは次のとおりです。
上流のレビューのために送信することを意図する機能の開発
パッチキューのパッチは変更できるため、フィードバックを簡単に組み込むことができると同時に、履歴追跡方法で機能を開発する理想的な方法を提供します。
新しい機能の追加を実験します
パッチキューは、プロジェクトの履歴を乱雑にしないため、エクスカチャの失敗でプロジェクトの歴史を乱雑にすることなく、アイデアをすばやく試してバージョンコントロールに保つ方法として安全に使用できます。実験を維持することに決めた場合、パッチキューを簡単に伝統的な水銀コミットのセットに変えることができます
別のプロジェクトのプライベートカスタマイズを維持します
パッチキューはプロジェクトの公式変更ログの一部ではないため、上流のプロジェクトのプライベートカスタマイズを維持するのに最適です。たとえば、プログラムを会社のワークフローとより良く統合するパッチキューを維持する場合があります
パッチキューはそうです いいえ 良い
長期にわたる枝
パッチキューは非常に不安定であるため、ソースコードの長期的な履歴を追跡する仕事が不十分です。このため、製品リリースに対応するものなどの長期にわたるブランチは、リポジトリまたは名前の支店に保管する必要があります。
グループ開発
パッチキューはマージ履歴を追跡しないため、グループ開発を行うための選択が不十分になります。特定の一連の機能がリポジトリに融合されたときに本当に見たいと思います。疑わしい場合は、従来のフォークに固執する必要がありますが、パッチキューのパワーをマスターすると、ワークフローに多大な柔軟性が得られ、コラボレーション能力が大幅に向上します。
MQは、同時開発を管理するための優れたツールです。私自身からの露骨な自己麻痺と自己宣伝 答え:
3プロジェクトごとに1つのパッチ(または複数の連続パッチ)でMQを使用します。
- 長所:シンプルで簡単です。
- 短所:後に切り替えて再構築する前に、qrefreshが必要です。プロジェクトが直交していない場合、トリッキーで危険です。
4プロジェクトごとに1つのMQブランチを使用します。
- 長所:超柔軟性とスケーラブル(同時プロジェクトの数)
- 短所:後に切り替えて再構築する前に、qrefreshとqcommitが必要です。複雑に感じます。