どうすればgit / git-shell関連の問題をデバッグできますか?


148

git / git-shellに関するデバッグ情報を入手するにはどうすればよいですか?

私は問題を抱えていました。それuser1は問題なくリポジトリをuser2複製でき、空のリポジトリしか複製できませんでした。私は設定しましたがGIT_TRACE=1、有用なものは何も言われませんでした。

最後に、長い試行錯誤の末、ファイルに対する権限の問題であることが判明しました。適切なエラーメッセージがこの問題を回避できます。


注:に加えGIT_CURL_VERBOSEて、Git 2.9.x / 2.10が必要GIT_TRACE_CURLです。以下の私の答えを参照しください。
VonC

そして(2019年第2四半期、3年後GIT_TRACE_CURL)、あなたは今持っていtrace2ます。例:git config --global trace2.normalTarget ~/log.normal以下の(新しい)回答を参照しください。
VonC

回答:


212

さらに詳細な出力を得るには、以下を使用します。

GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master


53
コアオプション以外にも、いくつかのGIT_TRACEオプションがあります。ここでユーバー-冗長オプションがあります:set -x; GIT_TRACE=2 GIT_CURL_VERBOSE=2 GIT_TRACE_PERFORMANCE=2 GIT_TRACE_PACK_ACCESS=2 GIT_TRACE_PACKET=2 GIT_TRACE_PACKFILE=2 GIT_TRACE_SETUP=2 GIT_TRACE_SHALLOW=2 git pull origin master -v -v; set +x
ポール・アイリッシュ

2
この変数を設定する方法と場所は?
Hunsu、2016年

これは、端末に貼り付けることができる行全体です。git pull origin master実行するコマンドでパーツを置き換える必要があります。
Aeolun 2016年

1
これはどのプラットフォームで動作しますか?確かにWindowsではありません。
カウリネーター2017

8
:Windowsでは、このように、これらの変数、時間(1行に1つずつ)で1を設定することができますset GIT_CURL_VERBOSE=1 set GIT_TRACE=1 git pull origin master
cowlinator

85

デバッグ中

Gitにはかなり完全なトレースのセットが埋め込まれており、これを使用してgitの問題をデバッグできます。

それらをオンにするには、次の変数を定義できます。

  • GIT_TRACE 一般的なトレースの場合、
  • GIT_TRACE_PACK_ACCESS packfileアクセスのトレース用
  • GIT_TRACE_PACKET ネットワーク操作のパケットレベルのトレース用
  • GIT_TRACE_PERFORMANCE パフォーマンスデータのログ記録
  • GIT_TRACE_SETUP リポジトリと相互作用する環境の発見についての情報
  • GIT_MERGE_VERBOSITY 再帰的なマージ戦略をデバッグするため(値:0-5)、
  • GIT_CURL_VERBOSEすべてのcurlメッセージを記録するため(と同等curl -v)、
  • GIT_TRACE_SHALLOW 浅いリポジトリのフェッチ/クローンをデバッグするため。

可能な値は次のとおりです。

  • true1または2stderrに書き込むには、
  • /指定されたファイルへの出力をトレースするために始まる絶対パス。

詳細については、Gitの内部-環境変数を参照してください。


SSH

SSHの問題については、次のコマンドを試してください。

echo 'ssh -vvv "$*"' > ssh && chmod +x ssh
GIT_SSH="$PWD/ssh" git pull origin master

またはssh、資格情報を検証するために使用します。

ssh -vvvT git@github.com

またはHTTPSポート経由:

ssh -vvvT -p 443 git@ssh.github.com

注:の数-vを減らして、冗長レベルを下げます。


$ GIT_TRACE=1 git status
20:11:39.565701 git.c:350               trace: built-in: git 'status'

$ GIT_TRACE_PERFORMANCE=$PWD/gc.log git gc
Counting objects: 143760, done.
...
$ head gc.log 
20:12:37.214410 trace.c:420             performance: 0.090286000 s: git command: 'git' 'pack-refs' '--all' '--prune'
20:12:37.378101 trace.c:420             performance: 0.156971000 s: git command: 'git' 'reflog' 'expire' '--all'
...

$ GIT_TRACE_PACKET=true git pull origin master
20:16:53.062183 pkt-line.c:80           packet:        fetch< 93eb028c6b2f8b1d694d1173a4ddf32b48e371ce HEAD\0multi_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master agent=git/2:2.6.5~update-ref-initial-update-1494-g76b680d
...

2
変更echo 'ssh -vvv $*' > ssh && chmod +x sshするためにecho 'ssh -vvv "$@"' > ssh && chmod +x ssh、単一のパラメータにスペースが含まれているエッジの場合には、より安全でなければなりません。
Alexander Bird

46

これを試してください:

GIT_TRACE=1 git pull origin master

40

SSH経由の場合は、以下を使用できます。

タイプ-vvまたはデバッグレベル2および3の-vvvのより高いデバッグレベルの場合:

# Debug level 1
GIT_SSH_COMMAND="ssh -v" git clone <repositoryurl>

# Debug level 2
GIT_SSH_COMMAND="ssh -vv" git clone <repositoryurl>

# Debug level 3
GIT_SSH_COMMAND="ssh -vvv" git clone <repositoryurl>

これは主に、サーバーでの公開鍵と秘密鍵の問題を処理するのに役立ちます。このコマンドは、「git clone」だけでなく、すべてのgitコマンドに使用できます。


はい、これは完璧に機能します。他より良い。はい、これは完璧に機能します。他より良い。
BMW

これは私が今重要な問題を解決しなければならないので最も便利ですが、git 1.8.3.1とOpenSSH_6.6.1p1、OpenSSL 1.0.1e-fipsでは動作しません。CentOSLinuxリリース7.2.1511で2013年2月11日(芯)。:(
グレッグDubicki

@GregDubicki奇妙です。答えを更新できるように、何が効果的かを教えてください。
バジルムーサ

1
Windowsではset GIT_SSH_COMMAND=ssh -v(引用符なしで)使用します。
jansohn 2018年

18

Git 2.9.x / 2.10(2016年第3四半期)には、別のデバッグオプションが追加されていますGIT_TRACE_CURL

Elia Pinto()によるcommit 73e57aacommit 74c682d(2016年5月23日)を参照してください。 支援者:TorstenBögershausen(、Ramsay Jones、Junio C Hamano(Eric Sunshine(Jeff King((合併によりJunio C浜野- -2f84df2コミットし、2016年7月6日)をdevzero2000
tboegigitstersunshinecopeff
gitster

http.cGIT_TRACE_CURL環境変数を実装する

GIT_TRACE_CURL環境変数を実装して、の詳細GIT_CURL_VERBOSE、特に完全なトランスポートヘッダーと交換されるすべてのデータペイロードを許可します。
特定の状況でより完全なデバッグ分析が必要になる場合に役立ちます。

ドキュメントには次のように記載されています:

GIT_TRACE_CURL

gitトランスポートプロトコルのすべての送受信データ(説明情報を含む)のカールフルトレースダンプを有効にします。
これはcurl --trace-ascii、コマンドラインで行うのと似ています。

このオプションは、GIT_CURL_VERBOSE環境変数の設定をオーバーライドします。


この回答で使用された新しいオプションだけでなく、Git 2.11(2016年第4四半期)テストでも使用できることがわかります。

Elia Pinto()によるcommit 14e2411commit 81590bfcommit 4527aa1commit 4eee6c6(07 Sep 2016)を参照してください。(合併によりJunio C浜野- -930b67eコミット 2016年9月12日)devzero2000
gitster

非推奨ののGIT_TRACE_CURL代わりに新しい環境変数を使用してください。 GIT_CURL_VERBOSE

GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git

この機能はクールです!唯一のポイントは、ASCII出力((ch >= 0x20) && (ch < 0x80)ドットではないすべてを.出力する)であり、httpデータの16進出力の方法がないことです。
kinORnirvana 2016年

8

Git 2.22(2019年第2四半期)にはtrace2Jeff Hostetlerによるコミットee4512eが導入されています。

trace2:新しい結合トレース機能を作成する

gitの新しい統合トレース機能を作成します。
最終的な目的は、現在のルーチンtrace_printf*trace_performance*ルーチンを統一された一連のgit_trace2*ルーチンに置き換えることです。

通常のprintfスタイルのAPIに加えて、trace2構造化データの書き込みを可能にする固定フィールドを備えたハイガーレベルのイベント動詞を提供します。
これにより、外部ツールでの後処理と分析が容易になります。

Trace2は3つの出力ターゲットを定義します。
これらは、環境変数 " GIT_TR2"、 " GIT_TR2_PERF"、および " GIT_TR2_EVENT" を使用して設定されます。
これらは、「1」または絶対パス名に設定できます(現在と同様GIT_TRACE)。

注:環境変数名については、常に使用してください GIT_TRACExxx、ではなくしてくださいGIT_TRxxx
だから、実際にGIT_TRACE2GIT_TRACE2_PERFまたはGIT_TRACE2_EVENT
後述のGit 2.22名前変更を参照してください。

以下は 古い環境変数名を使用した、この新しいトレース機能に関する最初の作業です。

  • GIT_TR2は、GIT_TRACEコマンドの概要データを置き換えて記録することを目的としています。

  • GIT_TR2_PERFはの代替として意図されていGIT_TRACE_PERFORMANCEます。
    コマンドプロセス、スレッド、リポジトリ、絶対および相対経過時間の列で出力を拡張します。子プロセスの開始/停止、スレッドの開始/停止、およびスレッドごとの関数の入れ子のイベントを報告します。

  • GIT_TR2_EVENT新しい構造化フォーマットです。イベントデータを一連のJSONレコードとして書き込みます。

trace2関数への呼び出しは、異なるを呼び出す必要なしに有効にされた3つの出力ターゲットのいずれかにログを記録します trace_printf*trace_performance*ルーチンやルーチンます。

Josh Steadmon()によるcommit a4d3a28(2019年3月21日)を参照してください。(合併によりJunio C浜野- -1b40314コミットsteadmon
gitster、2019年5月8日)を

trace2:ディレクトリターゲットへの書き込み

trace2環境変数の値が既存のディレクトリを参照する絶対パスである場合、指定されたディレクトリの下のファイル(プロセスごとに1つ)に出力を書き込みます。
ファイルはtrace2 SIDの最後のコンポーネントに従って名前が付けられ、その後に潜在的な衝突を回避するためのカウンターが続きます。

これにより、関連するtrace2envvarを無条件に定数のディレクトリ名に設定することにより、すべてのgit呼び出しのトレースを収集するのがより便利になります。


参照してくださいf672deeコミット(2019年4月29日)を、そして81567caをコミットし08881b9をコミットしbad229aをコミットし26c6f25をコミットしbce9db6をコミットし800a7f9をコミットしa7bc01eをコミットし39f4317をコミットしa089724をコミットし1703751コミットにより(2019年4月15日)のジェフ・ホステットラー(jeffhostetler
(合併によりJunio C浜野- gitster-5b2d1c0コミット、2019年5月13日)を

新しいドキュメントが今含んで唯一のシステムとグローバル設定ファイルから読み込まれコンフィグ設定(つまりリポジトリローカルおよびworktree設定ファイルとを-c尊敬されていないコマンドライン引数を。)

$ git config --global trace2.normalTarget ~/log.normal
$ git version
git version 2.20.1.155.g426c96fcdb

収量

$ cat ~/log.normal
12:28:42.620009 common-main.c:38                  version 2.20.1.155.g426c96fcdb
12:28:42.620989 common-main.c:39                  start git version
12:28:42.621101 git.c:432                         cmd_name version (version)
12:28:42.621215 git.c:662                         exit elapsed:0.001227 code:0
12:28:42.621250 trace2/tr2_tgt_normal.c:124 atexit elapsed:0.001265 code:0

そしてパフォーマンス測定のために

$ git config --global trace2.perfTarget ~/log.perf
$ git version
git version 2.20.1.155.g426c96fcdb

収量

$ cat ~/log.perf
12:28:42.620675 common-main.c:38                  | d0 | main                     | version      |     |           |           |            | 2.20.1.155.g426c96fcdb
12:28:42.621001 common-main.c:39                  | d0 | main                     | start        |     |  0.001173 |           |            | git version
12:28:42.621111 git.c:432                         | d0 | main                     | cmd_name     |     |           |           |            | version (version)
12:28:42.621225 git.c:662                         | d0 | main                     | exit         |     |  0.001227 |           |            | code:0
12:28:42.621259 trace2/tr2_tgt_perf.c:211         | d0 | main                     | atexit       |     |  0.001265 |           |            | code:0

Git 2.23(2019年第3四半期)に記載されているように、使用する環境変数は GIT_TRACE2です。

Carlo Marcelo ArenasBelón(によるコミット6114a40(2019年6月26日)を参照してください。 参照してください3efa1c6コミットにより(2019年6月12日)をÆvarアインホルトBjarmason( ) (合併によりJunio C浜野- -e9eaaa4コミットし、2019年7月9日)carenas
avar
gitster

これは、Git 2.22で行われた作業に従います:commit 4e0d3aacommit e4b75d6(2019年5月19日)、SZEDERGábor(szeder
(による合併Junio C浜野- gitster-463dca6コミット、2019年5月30日)を

trace2:環境変数の名前をGIT_TRACE2 *に変更します

ユーザーによって設定されることになっている環境変数の場合、 GIT_TR2* env変数は不明確で、一貫性がなく、醜いです。

設立のほとんどGIT_*の環境変数は省略形を使用して、行う(そのいくつかの場合ではありませんGIT_DIRGIT_COMMON_DIRGIT_DIFF_OPTS)それは略語は(何をかなり明らかだDIROPTS)のために立っています。
しかし、何のTR略ですか?追跡、従来、トレーラー、トランザクション、転送、変換、移行、翻訳、移植、トランスポート、トラバーサル、ツリー、トリガー、切り捨て、信頼、または...?!

名前の「2」サフィックスが示すように、trace2ファシリティは、最終的にはGitの元のトレースファシリティを置き換えることになっています。
対応する環境変数が同様に続き、元のGIT_TRACE変数の後に呼び出されることを期待するのは妥当GIT_TRACE2です。そのようなことはありません 'GIT_TR '。

すべてのtrace2固有の構成変数は、 ' trace2'ではなく' 'セクションにありtr2ます。

OTOH、これらの環境変数の名前から「トレース」の最後の3文字を省略しても、何も得られません

したがって、安定したリリースに移行する前GIT_TR2*GIT_TRACE2*、すべての環境変数の名前をに変更しましょう。


Git 2.24(2019年第3四半期)では、Gitリポジトリの初期化が改善されています。

Jeff King()によるcommit 22932d9commit 5732f2bcommit 58ebccb(2019年8月6日)を参照してください。(合併によりJunio C浜野- -b4a1eecコミットし、2019年9月9日)peff
gitster

common-main:trace2初期化の遅延

初期化します trace2共通のmain()関数でシステムすべてのプログラム(組み込みでないプログラムでも)でトレースを有効にします。

ただしtrace2、トレースするかどうかを決定するためにディスク上の構成を実際に読み取る必要があるため、起動は比較的重いです。
これにより、他の共通メイン初期化との予期しない相互作用が発生する可能性があります。たとえば、を呼び出す前に構成コードが表示されinitialize_the_repository()、通常の不変条件はthe_repository NULLになることのないは保持されません。

trace2common-mainで、初期化をさらに実行の直前にプッシュしてみましょうcmd_main()


Git 2.24(2019年第4四半期)では、trace2サブシステムからの出力がよりきれいにフォーマットされるようになりました。

参照742ed63をコミットしe344305をコミットしc2b890aをコミットし、(2019年8月9日)ad43e37をコミットし04f10d3をコミットしda4589cをコミット(2019年8月8日)、および371df1bをコミット(2019年7月31日に)によってジェフ・ホステットラー(jeffhostetler
(合併によりJunio C浜野- gitster-93fc876コミットし、2019年9月30日)を

そして、まだGit 2.24

参照87db61aをコミットし83e57b0コミット(2019年10月4日)を、および2254101をコミットし3d4548eをコミット(2019年10月3日)のことでジョシュSteadmon( )steadmon
(合併によりJunio C浜野- gitster-コミットd0ce4d9、2019年10月15日)

trace2:ターゲットディレクトリにファイルが多すぎる場合、新しいトレースを破棄します

サインオフ:Josh Steadmon

trace2ターゲットディレクトリにファイルを書き込むことができます。
頻繁に使用すると、このディレクトリがファイルでいっぱいになり、トレース処理システムに問題が発生する可能性があります。

このパッチは、ターゲットディレクトリに書き込むtrace2.maxFilesファイルの最大数を設定する構成オプション()を追加しますtrace2

maxFiles正の整数に設定されている場合、次の動作が有効になります。

  • trace2がターゲットディレクトリにファイルを書き込む場合は、最初にトレースを破棄する必要があるかどうかを確認します。以下の場合、トレースは破棄されます。

    • ファイルが多すぎることを宣言する監視ファイルがあります
    • または、ファイル数がを超えていtrace2.maxFilesます。
      後者の場合は、git-trace2-discard今後のチェックを高速化するために名前が付けられた番兵ファイルを作成します。

別のトレース処理システムが生成されたトレースを処理していることが前提です。センチネルファイルを処理して削除したら、新しいトレースファイルを再度生成しても安全です。

のデフォルト値trace2.maxFilesは0で、ファイル数のチェックが無効になります。

設定は、新しい環境変数で上書きすることもできます:GIT_TRACE2_MAX_FILES


また、Git 2.24(2019年第4四半期)では、git pushステージについてtrace2を教えています。

Josh Steadmon()によるcommit 25e4b80commit 5fc3118(2019年10月2日)を参照してください。(合併によりJunio C浜野- -3b9ec27コミットし、2019年10月15日)をsteadmon
gitster

push:trace2インストルメンテーションを追加する

サインオフ:Josh Steadmon

でtrace2領域を追加transport.cし、builtin/push.cプッシュのさまざまな段階で過ごし、より良いトラック時間に:

  • 参照の一覧表示
  • サブモジュールの確認
  • サブモジュールをプッシュする
  • 参照のプッシュ

Git 2.25(2020年第1四半期)では、一部がDocumentation/technicalヘッダー*.hファイルに移動されています。

参照6c51cb5をコミットしd95a77dをコミットしbbcfa30コミットf1ecbe0をコミット4c4066dコミット7db0305をコミットしf3b9055をコミットし971b1f2をコミットし13aa9c8をコミットしc0be43fをコミットし19ef3ddコミット301d595をコミットし3a1b341をコミットし126c1ccコミットd27eb35コミット405c6b1をコミットしコミットd3d7172コミット3f1480bコミット266f03eコミット13c4d7e(2019年11月17日)by Heba Waly(HebaWaly
(合併によりJunio C浜野- gitster-26c816aコミット 2019年12月16日)

trace2:ドキュメントを移動 trace2.h

サインオフ:Heba Waly

開発者が別のdocファイルで探すのではなく、コードの横にある使用法情報を見つけやすくなるため、関数のドキュメントをからDocumentation/technical/api-trace2.txtに移動しtrace2.hます。

Documentation/technical/api-trace2.txttrace2.hに追加されたdocファイルへのリンクを使用して、ファイルがそのまま別のdocファイルにある方が適切と思われる詳細がいっぱいなので、関数のドキュメントセクションのみが削除されます。また、ヘッダーファイル内のドキュメントとの同期を維持するのが難しい冗長な情報が含まれないように、関数docは削除されています。

(つまり再編成が別のコマンドの副作用を持っていたものの、中)2020年3月(Gitの2.25.2で説明して固定cc4f2ebコミットにより(2020年2月14日)のジェフ・キング(peff
(で合併Junio C浜野- gitster-コミット1235384、2020年2月17日)


Git 2.27(2020年第2四半期):環境変数のロギング可能にする Trace2の拡張機能。

Josh Steadmon()によるcommit 3d3adaa(2020年3月20日)を参照してください。(合併によりJunio C浜野- -810dc64コミット、2020年4月22日)をsteadmon
gitster

trace2:Gitに環境変数をログに記録するように教える

サインオフ:Josh Steadmon
Acked-by:Jeff Hostetler

trace2を介して、Gitは既に興味深い構成パラメーターをログに記録できます(trace2_cmd_list_config()関数を参照)。ただし、多くの構成パラメーターは環境変数を介したオーバーライドも許可しているため、これは不完全な状況を与える可能性があります。

より完全なログを可能にするためtrace2_cmd_list_env_vars()に、既存のconfig param logging実装をモデルにした新しい関数とサポート実装を追加します。


Git 2.27(2020年第2四半期)で、追跡対象の「」start_progress()としてとのstop_progress()呼び出しも使用するように進行状況メーターを示すコードパスを教えregionます。

参照してください98a1364コミットにより(2020年5月12日)をEmily Shaffer(nasamuffin)に
(による合併Junio C浜野- gitster-d98abceコミット、2020年5月14日)を

trace2:ログの進行時間とスループット

サインオフ:Emily Shaffer

git fetch」のような1つの操作だけで、トレースにスループットを書き留める方法を教えるのではなく、進行状況ライブラリ自体にツールを追加することで、低速に見えるかもしれない幅広いユーザー操作について学ぶことができます

進行状況を表示する操作は実行に時間がかかる可能性が高く、パフォーマンスを監視する必要があると思われます。

オブジェクト数とデータ転送サイズを表示することにより、操作が期待どおりにスケーリングされていることを確認するために、いくつかの派生測定を行うことができるはずです。

そして:

Git 2.27(2020年第2四半期)では、進捗状況APIを追跡可能な領域として使用できるようにするための最近の変更に対する直前の修正。

Derrick Stolee()によるcommit 3af029c(2020年5月15日)を参照してください。(合併によりJunio C浜野- -85d6e28コミットderrickstolee
gitster、2020年5月20日)を

progress:呼び出しtrace2_region_leave()後にのみ呼び出す_enter()

サインオフ:Derrick Stolee

Progress APIのユーザーはstart_progress()条件付きで呼び出し、display_progress()stop_progress()関数に、start_progress()呼び出されていない場合は何もしません。

に呼び出しを追加したとき trace2_region_enter()へのstart_progress()、progress API関数からの他のtrace2 API呼び出しへの呼び出しはstart_progress()、progress構造体で呼び出されていない場合、これらのtrace2呼び出しがスキップされることを確認する必要があります。

具体的には、呼び出すことはありませんtrace2_region_leave()からstop_progress()、私たちが呼び出されていないときstart_progress()のマッチングと呼ばれてきたと思われます、trace2_region_enter()



2

古いgitバージョン(1.8以前)の場合

古いgitおよびsshバージョンでSSHデバッグを有効にする適切な方法を見つけることができませんでした。私は使用して環境変数を探しましたltrace -e getenv ...、GIT_TRACEまたはSSH_DEBUG変数の組み合わせが機能しませんでした。

代わりに、一時的に 'ssh -v'をgit-> sshシーケンスに注入する方法を次に示します。

$ echo '/usr/bin/ssh -v ${@}' >/tmp/ssh
$ chmod +x /tmp/ssh
$ PATH=/tmp:${PATH} git clone ...
$ rm -f /tmp/ssh

gitバージョン1.8.3とsshバージョンOpenSSH_5.3p1、OpenSSL 1.0.1e-fipsからの出力は、2013年2月11日、githubリポジトリのクローンを作成します。

$ (echo '/usr/bin/ssh -v ${@}' >/tmp/ssh; chmod +x /tmp/ssh; PATH=/tmp:${PATH} \
   GIT_TRACE=1 git clone https://github.com/qneill/cliff.git; \
   rm -f /tmp/ssh) 2>&1 | tee log
trace: built-in: git 'clone' 'https://github.com/qneill/cliff.git'
trace: run_command: 'git-remote-https' 'origin' 'https://github.com/qneill/cliff.git'
Cloning into 'cliff'...
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/q.neill/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to github.com ...
...
Transferred: sent 4120, received 724232 bytes, in 0.2 seconds
Bytes per second: sent 21590.6, received 3795287.2
debug1: Exit status 0
trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.