これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド git-fast-export です。
プログラム:
NAME
git-fast-export - Git データ エクスポーター
SYNOPSIS
git 高速エクスポート [オプション] | git 高速インポート
DESCRIPTION
このプログラムは、指定されたリビジョンをパイプ処理に適した形式でダンプします。 git
高速インポート.
人間が判読できるバンドルの代替として使用できます (「 git バンドル(1))、または一種として
インタラクティブ git フィルターブランチ.
OPTIONS
--進捗=
インセット 進捗 ステートメントごとオブジェクト、によって表示される git 高速インポート 間に
インポート。
--signed-tags=(逐語的|警告|警告ストリップ|ストリップ|中止)
署名付きタグの処理方法を指定します。 エクスポート後の変換は可能であるため、
タグ名の変更 (リビジョンを除外するときにも発生する可能性があります)、署名
一致しません。
お願いするときは アボート (これがデフォルトです)、このプログラムは、次のような問題が発生すると終了します。
サイン入りタグ。 と ストリップ、タグはサイレントに署名なしになります。 警告ストリップ 彼ら
署名なしになりますが、次のような警告が表示されます。 逐語的、 かれらは〜だろう
サイレントにエクスポートされ、 警告する、エクスポートされますが、警告が表示されます。
--filtered-object のタグ=(中止|ドロップ|書き換え)
タグ付きオブジェクトが除外されたタグの処理方法を指定します。 改訂以降、
エクスポートするファイルはパスによって制限でき、タグ付きオブジェクトは完全にフィルタリングできます。
お願いするときは アボート (これがデフォルトです)、このプログラムは次のような問題が発生すると終了します。
そんなタグ。 と ドロップ このようなタグは出力から省略されます。 と 書き直す、 もし
タグ付きオブジェクトはコミットであるため、祖先コミットにタグを付けるためにタグを書き換えます(経由)
親の書き換え。 見る git-rev-リスト(1))
-M、-C
「」の説明に従って、移動および/またはコピーの検出を実行します。 git-差分(1) マニュアルページ、および
これを使用して、出力ダンプに名前変更コマンドとコピー コマンドを生成します。
このコマンドの以前のバージョンではエラーが発生せず、間違った結果が生成されることに注意してください。
これらのオプションを指定した場合の結果。
--エクスポートマーク=
内部マークテーブルをダンプします。 完了したら。 マークは XNUMX 行に XNUMX つずつ書き込まれます
:markid SHA-1 として。 リビジョンのマークのみがダンプされます。 BLOB のマークは無視されます。
バックエンドはこのファイルを使用して、インポートが完了した後にインポートを検証したり、
増分実行全体でマーク テーブルを保存します。 として開かれて切り詰められるだけです
完了時に、同じパスを --import-marks に安全に指定することもできます。 ファイルは
新しいオブジェクトがマーク/エクスポートされていない場合は書き込まれません。
--import-marks=
入力を処理する前に、で指定されたマークをロードします。 。 入力ファイルは次のとおりです。
存在し、読み取り可能である必要があり、--export-marks で生成されたものと同じ形式を使用する必要があります。
すでにマークされているコミットは再度エクスポートされません。 バックエンドの場合
同様の --import-marks ファイルを使用します。これにより、増分双方向が可能になります。
マークを実行間で同じに保つことで、リポジトリをエクスポートします。
--偽のミッシングタガー
一部の古いリポジトリには、タガーのないタグが付いています。 高速インポートプロトコルは素晴らしかった
それに関しては厳しく、それを許しませんでした。 高速インポートできるようにタガーを偽装します
出力。
--使用完了機能
でストリームを開始します 簡潔な 行われ スタンザを作成し、それを 行われ
- データなし
BLOB オブジェクトの出力をスキップし、代わりに元の SHA-1 ハッシュを介して BLOB を参照します。
これは、リポジトリのディレクトリ構造や履歴を書き換えるときに便利です。
個々のファイルの内容には触れずに。 結果として得られるストリームは、
必要なオブジェクトがすでに含まれているリポジトリによってのみ使用されます。
-フルツリー
このオプションにより、高速エクスポートはコミットごとに「deleteall」ディレクティブを発行します。
コミット内のすべてのファイルの完全なリストが続きます (単にリストするのではなく)
コミットの最初の親とは異なるファイル)。
--匿名化
リポジトリの形状を維持したまま、リポジトリの内容を匿名化します。
履歴と保存されたツリー。 以下の匿名化に関するセクションを参照してください。
--refspec
指定された refspec をエクスポートされた各 ref に適用します。 複数指定することも可能です。
[ ...]
受け入れ可能な引数のリスト git 回転解析 と git リビジョンリストを指定します。
エクスポートする特定のオブジェクトと参照。 たとえば、master~10..master では、
現在のマスター参照は、10 番目以降に追加されたすべてのオブジェクトとともにエクスポートされます。
祖先のコミット。
例
$ git fast-export --all | (cd /empty/repository && git fast-import)
これにより、リポジトリ全体がエクスポートされ、既存の空のリポジトリにインポートされます。
UTF-8 ではないコミットの再エンコードを除き、これは XNUMX 対 XNUMX のミラーになります。
$ git fast-export master~5..master |
sed "s|refs/heads/master|refs/heads/other|" |
git 高速インポート
これにより、次の名前の新しいブランチが作成されます。 他の from マスター~5..マスター (つまり、 マスター 線形を持っています
履歴では、最後の 5 つのコミットが必要になります)。
これは、BLOB とコミット メッセージが参照されていないことを前提としていることに注意してください。
リビジョン範囲に文字列が含まれています refs / heads / master.
匿名化
--anonymize オプションが指定されている場合、git はすべての識別情報を削除しようとします。
元のツリーと履歴パターンを十分に保持しながら、リポジトリから
いくつかのバグを再現するため。 目標は、プライベート リポジトリで見つかった git バグを修正することです。
匿名化されたリポジトリに保持され、後者は git と共有できます。
開発者がバグの解決を支援します。
このオプションを使用すると、git はすべての参照名、パス、BLOB コンテンツ、コミット、タグを置き換えます。
匿名化されたデータを含む出力内のメッセージ、名前、電子メール アドレス。 の XNUMX つの例
同じ文字列は等価に置き換えられます (たとえば、同じ作成者による XNUMX つのコミットは、
出力には同じ匿名化された作成者が含まれていますが、オリジナルとはまったく似ていません
著者文字列)。 コミット、ブランチ、タグ間の関係も保持されます。
コミットのタイムスタンプとして (ただし、コミット メッセージと参照名は、
オリジナル)。 ツリーの相対的な構成は保持されます (たとえば、ルート ツリーがある場合)
10 個のファイルと 3 つのツリーがあるため、出力も同様です)、ただし、それらの名前と内容は
ファイルが置き換えられます。
git のバグを見つけたと思われる場合は、匿名化されたストリームをエクスポートすることから始めることができます。
リポジトリ全体:
$ git fast-export --anonymize --all >anon-stream
次に、そのストリームから作成されたリポジトリにバグが残っていることを確認します (多くのバグ
実際には正確なリポジトリの内容に依存するため、そうではありません)。
$ git init anon-repo
$ cd アノンリポジトリ
$ git fast-import <../anon-stream
$ ... バグをテストします ...
匿名化されたリポジトリにバグが見られる場合は、非ストリームで共有する価値があるかもしれません。
定期的なバグレポート。 匿名化されたストリームは非常によく圧縮されるため、gzip 圧縮することに注意してください。
奨励されています。 ストリームを調べて、ストリームに何も含まれていないことを確認したい場合は、
プライベート データの場合は、送信する前に直接閲覧できます。 次のことも試してみてはいかがでしょうか。
$ perl -pe 's/\d+/X/g'
これは、すべての一意の行を示しています (数字は「X」に変換され、「User 0」を折りたたむために、
「ユーザー 1」などを「ユーザー X」に変換します)。 これにより生成される出力ははるかに小さくなり、通常は簡単です
ストリーム内にプライベート データがないことをすぐに確認できます。
制限
Since git 高速インポート 木にタグを付けることはできません。linux.git をエクスポートすることはできません。
リポジトリにはコミットの代わりにツリーを参照するタグが含まれているため、完全にリポジトリが完了します。
onworks.net サービスを使用してオンラインで git-fast-export を使用する