3

私のワークフローでは、通常、1 つのファイルに複数の変更を加える必要があります。各変更は、プロジェクト全体にわたる独自の概念的な変更単位 (= コミット) に属します。

私ができるようにしたいのは、特定の差分 (ファイル全体、またはファイルの特定の行のみ) を保留中のコミット (おそらく名前を付ける必要がある) に追加し、複数の保留中のコミットを「アクティブ」にすることです。同時に。

次に、特定の保留中のコミットに関連するすべての変更がすべてのファイルで完了したら、名前付きコミットをコミットできます!

どのVCSがこれに適しているかについてのアイデアはありますか?

4

6 に答える 6

6

svn では、変更リストを定義てから、特定の変更リスト内のファイルのみをコミットできます。

Git はさらに進んで、 git add -pを使用してファイルから変更されたチャンクを対話的に選択することで、パッチを記録できます。

これらの機能は人気がありますが、ベスト プラクティスに反しています。この方法では、変更を適切にテストできません。作業コピーではすべてが機能する可能性がありますが、変更の一部のみをコミットするとビルドが壊れる可能性があります。機能ブランチを使用する方がはるかに安全であり、最新のバージョン管理システムはこれをサポートしています。

Mercurial ShelveExtensiongit-stashもあります。これにより、後でコミットするためにパッチ ハンクの粒度で選択した変更を棚上げできます。この作業方法により、コミットする前に適切にテストできます。

于 2009-04-15T11:15:47.190 に答える
2

元のリクエストは、「チェリー ピッキング」のように聞こえます: 新しいコミットに含める「差分」のフラグメントを手動で選択します。少なくとも Git と Darcs はそれをサポートしています。emacs + git にはgitsumがあり、私はこれがとても気に入っています。

于 2009-05-12T20:52:57.113 に答える
1

bzr では、shelve/unshelve コマンドを使用してファイルからいくつかの変更を取得してから戻すか、loom プラグインを使用して関連するパッチのセットを簡単に管理できます。しかし、これらのどちらもあなたの元の要求を解決しません.VCSがこの方法でそれを行うことができるとは思えません.

于 2009-04-24T19:37:19.513 に答える
0

それぞれの個別の変更をコミットすることで、システムを構築できるようにすることは非常に困難です。

一度に1つのことを実行し、各問題を個別にコミットすることを強くお勧めします。

于 2009-04-15T11:22:23.193 に答える
-1

Subversionクライアント(> = 1.5)には、変更リストの概念が含まれています。これは、選択した名前に関連付けられているファイルのグループです

これは、同じ作業コピー内の複数の異なるファイルセットで作業する場合に特に役立ちます。Subversionを使用すると、各セットの各ファイルを覚えておく代わりに、チェンジリストを各ファイルセットに関連付けることができます。ファイルのセットをターゲットとして受け取るほとんどのコマンドは、変更リストのメンバーに基づいてそれらのターゲットをフィルタリングする--changelistオプションも受け入れるようになりました。チェンジリストのメンバーシップは、新しいチェンジリストサブコマンドを使用して編集できます。

于 2009-04-15T11:16:43.380 に答える