問題タブ [blame]

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.

0 投票する
1 に答える
134 参照

git - Git Blame -M: 予期しない動作

1 つのファイル内のコードの動きを検出するために git Blame -M を使用すると、自分では説明できない結果が得られます。

まず、次のファイル (file.cpp) をコミットします。

次に、最初の行にあったものを移動し、代わりに何か新しいものを追加して変更します。

ログは次のようになります。

今、私は責任を負います:

func1() を含む行が移動したと認識されないのはなぜでしょうか。必要な文字数を減らそうとしました (つまり、-M4 など)。さらに、 -w オプションがあるため、スペースは問題になりません。

0 投票する
2 に答える
4553 参照

git - git Blame: マージ後の正しい作成者

GIT マージにより、新しいコミットが導入されます。これにより、「git Blame」で問題が発生します。マージされた行は、マージを行った開発者によってコミットされたように見えます。

これが競合する変更の場合であることは理解できます(彼が競合を解決したため)。しかし、競合していない行でこれが起こらないようにする方法はありますか? 「責任を負う」ためのいくつかのオプションはありますか?

回避策がない場合、これにより、多くのマージがある場合、基本的に「git Blame」はほとんど役に立たなくなります。GIT は多くのマージを推奨しています。

SVN には、競合しないマージでこの問題がありますか? 私はそうは思いませんが、SVN で作業する際に疫病のようなブランチを (当然のことながら) 回避したため、間違っている可能性があります。

0 投票する
0 に答える
141 参照

version-control - 注釈を同時に表示するウィンドウでビジュアル マージ ツールをマージする方法はありますか?

私は Mercurial を使用していますが、その下のバージョン管理システムを認識するマージ ツールは、バージョン管理システムを認識せず、2 つの異なるフォルダにある 2 つの「ファイル」しか認識しないマージ ツールがいくつかのことを実行できると思います。 、決してできませんでした。

私は KDIFF3 を使用しており、最近 BeyondCompare を試しましたが、どちらもこれを行うことはできません。少なくとも、私にはわかりません。

私がやりたいことは、この写真、注釈列、およびおそらくこれらの注釈列から他のウィンドウを開く機能で最もよく示されているため、特定のファイルの特定のバージョンを参照して、マージを実行しようとするときにコンテキストを確認できます。

ここの画像では、2 方向のマージを示していますが、3 方向のマージにも同じことが当てはまります。表示されている実際のファイル コンテンツの右側または左側に、ガターまたは右側の注釈列が必要で、この変更がどこから来たのかを示す何らかの注釈が表示されます。Mercurial の 16 進 ID は比較的不親切で役に立たず、repository-local-revision-numbers はリポジトリ ローカルであるため、コミット コメントに基づく短いテキストの説明が最も役立つと思います。もちろん、Mercurial では、これらのコミット コメントの 99% が「マージ」と言うだけです。(うめき声。) しかし、マージ時に不自由なままにしていたツールやワークフローを使用していなかったと仮定してみましょう。

ここに画像の説明を入力

現在、複雑なマージのワークフローは次のようになっています。

  1. 私の分散バージョン管理ツール (mercurial) を使用して、実際にはブランチである別のリポジトリから変更をプルします。マージ。TortoiseHg のマージ ウィンドウは、通常、すべての作業を開始する場所です。これにより、(比較または Kdiff3 を超えて) マージ ツールを構成できます。

  2. ただし、「まったく異なる 2 つのフォルダー内の異なるバージョンのファイルを 2 方向または 3 方向でマージするだけでなく、私があなたに言った名前ですが、これらのファイルは完全な編集履歴を持っているファイルでもあり、人間に実際のコンテキストを示すために利用できます。これらの行の変更がコミットコメントとともに行われたコミットであり、多くの場合、バグ番号の一部としてバグ番号が含まれています。マージを行っている人に一体何が本当に起こっているのかを見る能力を与えるコミット。

たとえば、Mercurial から Git に変更したり、ツールが自動的に実行できると思われることを手動で実行する必要のない実際のマージ エクスペリエンスを実現する場合でもそうでした。Mercurial、TortoiseHG、および KDIFF3 を使用していますが、KDIFF3 から他のツールに変更したり、注釈を取得して 1 つの画面にマージしたりするために何かを行うことができれば、そうしたいと思います。

0 投票する
1 に答える
160 参照

git - Git: 別のファイルから移動された行を特定する

1 回のコミットで、行を変更または追加することなく、いくつかのファイルからチャンクを切り取り、それらをいくつかの新しいファイルに入れるコミットがあります。変更または追加がないことは、vimdiff を使用して手動で検証されました。

git を使用して、どのファイルからどの行が移動されたか、およびそのコミットで新しいファイルに追加された行があったかどうかを確認することはできますか? はいの場合、どのように?

git blame -C fileまだいくつかのチャンクを新しいファイルに属していると見なします。

たとえば、これが再現される 1 つの宛先ファイルでは、1 つの元のファイルから移動された 2 つのチャンクがありました。1 つは 388 行、もう 1 つは 30 行です。この場合git blame -C file、HEAD の新しいファイルに 12 のチャンクが割り当てられ、古いリビジョンの元のファイルに割り当てられたチャンクが点在しています。

簡単な模擬テストで期待される結果が得られます。

ただし、実際のコミットはさまざまなコンテンツを変更するものであり、その前に長い歴史があります。

0 投票する
2 に答える
1893 参照

git - TortoiseGit のせいで空白の変更を無視するにはどうすればよいですか

git Blame での空白の変更を無視したい場合は、-wオプションを使用できます。しかし、どうすれば TortoiseGit Blame GUI ツールでそれを行うことができますか? これは可能ですか?

0 投票する
1 に答える
366 参照

mercurial - Hg ページャー拡張機能が「blame」で機能しない

pager拡張機能でMerucrial を使用しblameています。

私は自分の.hgrcファイルに持っています:

その他のコマンド - diffstatushelp、およびlogはページャーを介して正しくルーティングされますが、blameそうではありません。理由についてのアイデアはありますか?

0 投票する
2 に答える
716 参照

git - バージョン管理で単語ごとに非難/注釈を付けますか?

バージョン管理で単語ごとの履歴を再構築することは可能ですか? 理想的には、1) 関心のある行の範囲を示す、2) バージョン間でコードが頻繁に上下に移動するため、プログラムに以前のバージョンの対応する行番号を割り出させる (潜在的にバージョンの範囲、たとえばリビジョン 19 以降、または 1 週間前から)、3) 単語ごとの履歴 (単語グループが最後に変更されたバージョン、または単語グループが変更された作成者) を出力します。svn blameつまりgit blame、単語ごとのレベルのようなものです。

それができない場合、上記の #1 と #2 を実行できるツールはありますか? つまり、1) 関心のある行の範囲を示し、2) 以前のバージョンで対応する行番号をプログラムに認識させ、3) プログラムはこれらの行の履歴を出力します (変更があった場合)。

svn または git のいずれかが私にとって本当に役に立ちます。