1

ファイル名が指定されている場合にのみ hg commit コマンドを使用する方法はありますか?

これはうまくいくはずです: hg commit file1 file2

これはすべきではありません: hg commit

コミットすべきでないファイルを誤ってコミットしてほしくありません。

4

3 に答える 3

4

これが可能かどうかはわかりませんが、あなたのワークフローや Mercurial の知識に何か問題があるように思われるので、この問題が Mercurial で通常どのように管理されているかについてお答えします。

「コミットされるべきではないファイルをコミットする」とはどういう意味ですか? そのフレーズの 2 つの意味のいずれかを取得できます。

  1. 人々は、追加されるべきではないファイルをリポジトリに追加します
  2. 人々は変更してはならないファイルを変更してからコミットします

それが最初の場合は、ファイルを作業コピーから移動するか、ファイルに追加する必要があり.hgignoreます。このファイルは、や*.objなどのコマンドによって無視されるファイル (または などのファイル パターン) を指定するために使用されます。hg statushg commit --addremove

2 回目の場合は、コミットする前に、変更内容を確認する必要があります。hg statusどのファイルが変更されたかを確認するために使用hg diffし、コミットするつもりがなかった可能性があるものを見つけた場合に使用する必要があります。一度に 1 つの問題のみを修正するか、新しい機能をいくつかの段階に分割して各段階の後にコミットすることで、より頻繁にコミットする習慣を身につければ、これはより簡単になります。

別の考えられる問題は、開発者によって頻繁に変更されるが、リポジトリにコミットされるべきではない構成ファイルがあることです。この問題の一般的な解決策は、リポジトリにテンプレート構成ファイルを用意し、各ユーザーがリポジトリのクローンを作成するときに、そのファイルを正しい名前にコピーすることです。

于 2012-12-11T13:41:25.783 に答える
2

実際、それはかなり簡単です。commitをそれ自体のエイリアスとして定義することでそれを行うことができますが、明示的な引数を使用します。[alias]hgrcファイルのセクションに、以下を追加します。

commit = commit $1

これでも複数の引数を処理できます。これらは、エイリアス展開の最後に追加されるだけです。ただし、引数なしでコミットしようとすると、次のようなエラーが発生します。

中止:$ 1:そのようなファイルまたはディレクトリはありません

より複雑なエイリアスを使用すると、独自のエラーメッセージを表示できます。

于 2012-12-11T17:49:09.700 に答える
2

作業ディレクトリに複数の特定の変更が含まれている場合 (特定のファイルのみをコミットすると考えられる唯一の理由)、1 つのファイルに複数の変更が含まれる可能性があります。コミットしたい変更とそうでない変更があります。

チェックインするファイルを制限するのではなく、Record 拡張機能Shelveなどの使用を検討する必要があります。どちらも、どの特定の変更をコミットするかを指定できますが、その方法は少し異なります (Record はおそらくあなたのニーズに合っていると思います)。

個人的には、ワークフローを変更して小さな変更を加え、定期的にコミットすることを検討します。あなたの質問は、Mercurial はほとんどファイルベースの方法 (CVS (または Subversion?) のように) で使用しようとしていることを示唆していますが、Mercurial は変更セットベースであり、リポジトリの状態を全体として扱います。

于 2012-12-11T16:33:51.670 に答える