問題タブ [git-notes]
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.
git - git でフェッチするときに参照/メモが欠落している
以下を使用してリモート git ノートをフェッチしようとしている状況があります。
リポジトリの新しいクローンでは、これは正しく機能します。2 つのノート名前空間をプルダウンします。
ただし、現在のプロジェクト リポジトリでは、そのフェッチを行うと、参照の 1 つしか取得できません。手動でファイルを削除して.git/refs/notes/git-ratchet-1-test
再度取得しようとすると、そのファイル/参照をプルダウンします。
なぜ私は他の人を引き下げていないの/refs/notes/git-ratchet-1-test2
ですか?
git - refs/heads の外部に保存された ref をブランチと見なし、通常のブランチとしてチェックアウトして作業することはできますか?
さて、refs/heads 内にある場合にのみ ref がブランチと見なされるかどうかはわかりません。. したがって、refs/heads の外部に格納された refs を「適切なブランチ」と呼ぶことができるかどうかはわかりませんが、ポイントは次のとおりです。
すべての通常のブランチがそうであるように、コミットへの参照があるが、参照/ヘッドの外に格納されているとしましょう。たとえば、git-notes で追加されたメモは、デフォルトで ref refs/notes/commits にこの方法で保存されます。
何らかの方法で、通常のブランチであるかのようにチェックアウトし (デタッチド ヘッド チェックアウトを実行しない)、その後、他の git コマンド (リベース、チェリー ピックなど) を使用して作業することはできますか?あたかも通常の refs/heads ブランチであるかのように?
通常git checkout
はコミットとしてのみチェックアウトし、リポジトリを分離ヘッド状態にすることを知っています。
私はうまくいくと思われる方法を見つけました。
そして、今回はやらなければならなかったことを行うことができたようですが、一般的にこれがサポートされているのか、サポートされているのか、少なくとも「現在はうまく機能している」操作なのかを知りたかったのです。将来それを信頼し、他の人にそれを利用するよう提案できるかどうか。
git checkout のソースを調べてみましたが、しばらくすると、Stack Overflow に質問を投稿した方がよいことが明らかになりました (もちろん、以前に Web で検索しました)。
後から考えると、(全体の) git ソース コードを調べるのにそれほど時間はかからなかったかもしれません。
リポジトリ間での(恐ろしく実装/文書化された)メモの共有に関する問題を解決するために、これが本当に必要でしたが、これに集中せず、上記の質問に答えるか、無視して、知識のある他の人に任せてくださいそれは答えます。
git - Gitノート:同じ名前空間を持つ同じノート値を複数のコミットに添付しますか?
特定の名前空間でメモを追加するには、次のようにします。
しかし、タグと同様に何かを指定する必要がある場合はどうでしょう。これからのように (特に指定されていない場合)、すべてのコミットには、名前空間task
と10
?の値を含むメモが必要です。そして後で変更する場合は、今から言ってみましょう: すべてのコミットは自動的に?namespace
task
の値とメモを持つ必要があります。11
言い換えれば、将来のすべてのコミットを関連付けて、同じメモを自動的に取得します (別の方法で指定されていない場合)。または、タグのようにして、過去のコミットを特定のメモに関連付ける場合は?
これが必要なので、同じメモ (または同じメタデータ) を持つすべてのコミットに対して同じメモを書く必要はありません。
私がメモでできることと似たようなことはありますか、それとも (メモだけでなく) git で使用できる他の優れた機能があるのでしょうか?
git - 特定のディレクトリ名のツリー ハッシュを取得するには?
木のオブジェクトにメモを添付したいと思います。ただし、そのためには、まずツリー オブジェクトのハッシュを知る必要があります。リポジトリの一部である特定のディレクトリ名について、それにメモを添付するために、所属するツリー オブジェクトのハッシュを取得するにはどうすればよいですか?
この回答を読んでから、使用できることがわかりました
ルート ツリーの内容を一覧表示するには、ディレクトリ名の出力を grep し、ネストされたツリー オブジェクトを再帰的にたどって、階層内のより深いディレクトリのツリー オブジェクトのハッシュを取得する必要があります。
get-tree-hash.sh
基本的に、架空のスクリプトの実装を探しています。のように呼ばれたら
出力する必要があります
git - ClearCase のものと比較して git メタデータ戦略を使用する方法は?
以前の開発者生活では、clearcase は 10 年以上にわたってバージョン管理のためのツールでした。現在、私が働いている組織は 4 年ぶりに git に移行しました。clearcase には、リポジトリ、ブランチ、ラベルなど、アイテムのすべてのレベルの属性など、簡単にアクセスできるメタデータ構造があります。git notes は存在しますが、いくつかの Web サーフィンの後、これを効率的に行うための明確な良い方法とその理由を見つけられませんでした。たとえば、UCM ClearCase のベースライン プロモーション レベルは良い概念であり、git と同じくらい単純であることを望みます。
この特定の問題について私が代表する開発コミュニティの統計: < 100 人の開発者、< 5 つのメジャー リリース ブランチ、< 100 のカスタマー パッチ ブランチ、コード ベースのサイズ: < 1000000 行のコード。
したがって、適切なメタデータ戦略とツールが必要です。
clearcase では、次のメタデータ構造が存在します。
- ラベル (一般的な使用法: 外部 SW 配信に含まれるすべてのファイル リビジョンを指摘する)
属性、ラベルまたはブランチに適用できます:
- label 属性、任意の値を持つことができます、一般的な使用法: ラベルのステータスを伝える: TEST_RESULT:OK|NOK または CUSTOMER_AVAILABILITY:GENERAL|LIMITED|INTERNAL_ONLY
- ブランチ属性、一般的な使用法: BRANCH_STATUS:ACTIVE|OBSOLETE
ステータス属性を持つラベルの形式である UCM ベースライン (例: https://www-304.ibm.com/support/docview.wss?uid=swg21135893を参照)
- ハイパーリンク (たとえば、マージ方向を示すために使用)
特に:
- TEST_RESULT に使用できるラベル + 属性の構成
- branch + BRANCH_STATUS を明確にすることができる属性
git - クローン作成時に git ノートを取得する
次を使用してクローン作成後にgitノートを取得できることを知っています:
または、常にフェッチされるように git config でセットアップすることもできます。
ただし、複製時にメモを取得できないため、複製してからフェッチする必要があります。--mirror
クローン作成時に使用するとメモも取得されることがわかりますが。ただし、私の最適な設定は、ミラーを実行せずに任意のリポジトリを複製し (--bare
他の不要な参照を暗示し、取得するため)、メモも取得できることです。
たとえば、クローン時に特定の追加参照をフェッチするように git config をセットアップする方法はありますか?
git - メモをリモート git リポジトリにプッシュする
最近、Git にアーカイブしたプロジェクトの古い紙のドキュメントを見つけましたが、コミットには反映されていません。さまざまなコミットをすべてリベースして修正し、履歴を書き換えたくないので、新しい見つかった情報をGit Notes
. ローカル リポジトリにメモを入力しました。
ただし、これらのメモをリモート リポジトリにプッシュできないことがわかりました。
次のコマンドを試しました:
git push "origin_ssh" "/refs/notes/*"
git push "origin_ssh" /refs/notes/commits
git push "origin_ssh" /refs/notes
これらはすべてエラーを出しますfatal: remote part of refspec is not a valid name in /refs/notes
ここで何が間違っていますか?メモをリモート リポジトリにプッシュするにはどうすればよいですか?
git - BFGの後のgitノート?
SVN から git に移行しましたが、各 git コミットに SVN リビジョン番号を参照するメモがありました。リポジトリのインポート後、BFG リポジトリ クリーナーを使用して、バイナリ ファイルやその他のゴミから git 履歴を消去しました。残念ながら、入力してもメモが表示されませんgit log
。BFG がメモのコミットに関する参照を更新するのを忘れていると思います。BFG は、次の形式で古いオブジェクト ID を新しいオブジェクト ID にマッピングした *.txt レポートを残します。
上記のマッピングを考慮して、メモをすばやく修正するためのスクリプトを提案できますか?
git notes
PS: 2 番目に入力すると、BFG レポで古いと見なされる参照が表示されるため、更新されていない参照が問題の原因であるとほぼ確信しています。object-id-map.old-new.txt