問題タブ [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.
login - Tortoise SVN tracking changes with single login computer?
I have a development machine that we use to change file and we have SVN as our CM tool. We only have a single login to the computer itself. Is there a way to track the changes in the repository someway even if we have a single computer login?
In other words...
Computer has 3 users: A, B, C
The computer only has one login.
So if user A changes something, and then user B changes something. How can I differentiate the two changes?
svn - Subversion-再フォーマットされたファイルのコミット
私はこれが不可能である可能性が完全にあると言うことから始めます-そうでなければ、それは問題ありません(まあ、それはひどいですが、私は生きます)。「まあ、とにかくそれはどのように機能するのでしょうか?」私がやりたいことをするのに壁がありますがねえ。
私がやりたいのは、所有権データを変更せずに、Subversionリポジトリ内の多数のファイルを再フォーマットすることです。これにより、次のようになります。
これに(新しい行が所有されていない場合):
またはこれ(新しい行は私が所有していますが、変更された行は所有していません):
または他の順列。
リポジトリには不適切な形式のコードがたくさんあるので、これを実行したいと思います。Blameをヒットできると便利なので、(ほとんど)すべての所有権を取得せずにクリーンアップしたいと思います。ファイルの横に移動して、各行の最後の変更と、それらの変更の理由を確認します。コミットメッセージと所有権を使用して再フォーマットすると、リポジトリの大部分のそれが削除され、実際の人のログを調べて、確認のために差分をとる必要があります。
誰かがBlameを台無しにすることなくコードを再フォーマットするための別の方法を考えることができれば、私もそれについての提案を受け入れます。
git - ファイルのすべてのバージョンの責任
Gitリポジトリを使用していますが、ファイル(log-tree.cなど)の「非難」データを取得する必要があります。だから、私は次のコマンドを使用しています
ただし、ファイルの最後のバージョンのデータが表示されているだけですが、そのファイルの各バージョンの「非難」情報を取得する必要があります。だから、どうすればそれを行うことができますか?
mercurial - Mercurial annotate/blame が間違った元のリビジョンを与える
最近、ソース ファイルの特定の行を担当する変更セットを追跡する際に問題が発生しました。hg blame
私が興味を持っていたブランチにマージされたことのないリビジョンを私に与えていました。
以前に同様の無関係な変更が行われた場合、Mercurial はそれを元のリビジョンとして表示することを発見しました。これはバグですか、それともこのように動作するはずですか? 後者の場合、その理由を説明していただけますか。
最小限の例を次に示します。
レポは次のようになります。
実行するhg blame
と、チェンジセット 1 ではなく、チェンジセット 2 からの最後の行が表示されることが期待されます。
git - bzr qannotate に似た git Blame gui はありますか?
以前のbzr
ユーザーで初心者として、に似たgit
優れた GUI ツールを見つけようとしています。後者には 2 つの主要なビューがあります。git blame
bzr qannotate
- 短い注釈情報 (誰が、どのリビジョンで行を変更したか) を含むファイル コンテンツ ビューアー + コミッター ID と変更の年齢に基づく背景の色付け。
- ファイル ログ ビューア: ファイル コンテンツの行をクリックすると、その行が変更されたときのリビジョンと、それに関するすべてのログ情報が表示されます。
スクリーンショット:
XCode IDE にはそのようなものが組み込まれているようですが、エディター ウィンドウ内にあるため、あまり便利ではありません。
これまでのところ、GitX 0.7.1 と GitHub for Mac を試してみましたが、どちらにも「責任」はまったくありません。
Mac 用の SourceTree をチェックしたところ、非難のサポートがありますが、かなり初歩的で、 command-line とほぼ同じようgit blame
に表示されますが、行をダブルクリックして別のウィンドウで対応するリビジョンと変更を確認できます。それはまだ ほど良くありませんbzr qannotate
。
使用できる別の GUI ツールはありますか?
version-control - 「blame」コマンドの単純化されたセマンティクスは良いことですか?
バージョン管理履歴を保存するための新しいweaveベースのデータ構造に取り組んでいます。これは間違いなく、それが出てきたときにそれが物事を行う正しい方法であるかどうかについていくつかの宗教戦争を引き起こすでしょうが、それは今の私の質問ではありません.
私の質問は、出力の責任と関係があります与えるべきです。コード行が何度も追加、削除、およびマージされた場合、どのリビジョンが原因であるかが常に明確であるとは限りません。これは特に、コードのセクションが削除されると、そこにあったすべての記録が失われ、削除の責任がないことを意味します。私がこの問題について話し合った人は皆、より良くしようとすることは単に価値がないと言っています. 削除されたセクションの後の行の責任が、実際のセクションが削除されたときのリビジョンに変更されたというハックを入れることがあります。おそらく、セクションが最後にある場合、最後の行の非難が変更され、ファイルが空になった場合、文字通り非難情報を置く場所が残っていないため、非難は実際にエーテルに消えます。
私の実際の質問に移ります。通常、各行のせいで、履歴で追加および削除された場所の完全な履歴を調べ、3方向マージ (または、十字型マージの場合はランダムでたらめ) を使用し、それらの間の関係に基づいて履歴に基づいて行が存在する必要があるかどうかを判断し、そうでない場合は、現在のリビジョンで新規としてマークします。異なる責任を持つ複数の祖先で行が発生する場合、継承するものを任意に選択します。繰り返しになりますが、この完全に文書化されていないが事実上の標準的な慣行を継続することは、議論の余地がないと思います。
私の新しいシステムが分岐するところは、履歴全体の複雑な計算に基づいて特定の行が現在のリビジョンに含まれるかどうかの複雑な計算を行うのではなく、直接の祖先を調べ、その行がいずれかの行にあるかどうかです。非難を継承する任意のものを選択します。私は主に技術的な理由でこの変更を行っています (同様の技術的な理由と配慮の欠如により、他の Blame 実装が同じことを行う可能性は十分にあります) が、それについて考えた後、私の一部は実際には新しい動作を好むようになりました。古いものよりも直感的で予測可能です。みんなどう思う?
git - Git:どのコミットがさまざまな行に触れたことがあるかを発見する
特定の範囲の行に接触しgit blame
た一連のコミットを取得するための使用方法を理解するのに苦労しています。このような同様の質問がありますが、受け入れられた答えは私にそれ以上のことをもたらしません。
の1000行目から始まる定義があるとしましょうfoo.rb
。たった5行の長さですが、これらの行を変更したコミットの数は膨大です。私が行った場合
私はこれらの行を変更した(多くても)5つの異なるコミットへの参照を取得しますが、「それらの背後にある」コミットにも興味があります。
同様に、
ほぼ私が望むものですが、行範囲を指定することはできませんgit rev-list
git blame
これらの5行に触れたことのあるコミットのリストを取得するためにフラグを渡すことはできますか、またはそのような情報を抽出するスクリプトを作成する最も簡単な方法は何ですか?定義がかつて5行より多いまたは少ない可能性を今のところ無視しましょう。
git - Git で特定のファイルの特定の変更を見つける方法
Git プロジェクトに、ある時点で誰かによって特定の値が変更されたファイルがあります。誰がいつなのかはわかりません。変更がいつ行われたかを知りたいのですが、Git でそれを追跡する方法がわかりません。
を使用してみましgit diff <sha1> <sha2>
たが、特定の 1 つのファイルを確認したいときに、プロジェクト全体の違いが表示されます。
git - sed:git--line-porcelain出力を解析します
これはこの質問に関連していますが、別の質問が必要だと思います。
git blame --line-porcelain
の出力は次のようになります
sed(またはgrepまたはawk)を使用して、commit shaとcomitter-timeだけをフィルターで除外するにはどうすればよいですか?上記の例では、次のようになります。
perlのワンライナーは大丈夫かもしれませんが、私はむしろルビーに依存したくありません。
version-control - バージョン管理下のファイルで作成者を表示できる(非難または注釈をサポートする)マージ/差分ツール
ファイルをマージするときは、(私にとっては)各行の作成者を表示すると便利です。それをサポートする差分またはマージツールはありますか?