問題タブ [sparse-checkout]
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 がこの種のリポジトリでうまく機能するかどうかの可能性を調べていますが、私が見つけることができるすべての例は次のことを行います。
この一連のコマンドの問題は、元のクローンもチェックアウトを行うことです。元の clone コマンドに -n を追加すると、read-tree コマンドで次のエラーが発生します。
エラー: スパース チェックアウトは作業ディレクトリにエントリを残しません
最初にすべてのファイルをチェックアウトせずにスパース チェックアウトを行うにはどうすればよいですか?
git - Gitサブモジュールを浅いクローンとスパースチェックアウトに設定しますか?
多くのベンダーのObjective-Cライブラリ(たとえばfacebook-ios-sdk
)は、リポジトリのファイル/ディレクトリの特定のサブセットをXcodeプロジェクトにコピーするように指示します。これに関する1つの問題は、ベンダーコードのリビジョンがわからないことです。もう1つは、ベンダーコードに変更を加えた場合、Gitを介して変更を提供するのは簡単ではないということです。
解決策として、各ベンダーライブラリをプロジェクトのリポジトリのGitサブモジュールとして追加し、いくつかの追加設定を追加します(たとえば、.gitmodules
ファイル内)。このように、別の人が私のプロジェクトを複製して実行したgit submodule update --init
場合、それらのリポジトリとサブモジュールは、私が設定したのと同じデフォルト設定を使用するため、私のものと同じ状態になります。
- スパースチェックアウト:サブモジュールの特定のファイルのみをチェックアウトします。
- 浅いクローン:サブモジュールの特定のSHA1のみをクローンします。
Gitサブモジュールに上記の設定を設定するにはどうすればよいですか?
svn - 再ダウンロードせずに既存の SVN 作業コピーの深さを変更する
SVN リポジトリ全体の作業コピーを持っていますが、ディスク容量の問題のため、それをスパース作業コピーに変更したいと考えています。
これを行う1つの方法は次のとおりです。
ただし、最初に と を削除project1
してからproject2
、それらを再ダウンロードします。サイズが非常に大きく、サーバーのアップロード速度が非常に遅いため、これは非常に不便です。私はこれを試しました(実験として、レポの別の小さな部分で):
しかし、最後のコマンドは最初の 2 つを元に戻すだけです。
すぐに更新/変更せずに作業コピーの深さを設定するにはどうすればよいですか?最初にサブディレクトリを正しく構成する機会を得ることができますか?
または、最初にコピーして安全な場所に移動するなど、私が望むことを達成する別の方法はありproject1
ますproject2
か?
git - git に変換するとき、単一ディレクトリの svn チェックアウトをどのように処理すればよいですか?
私はすぐに、アプリケーションの一部を、svn
バックアップされたリポジトリを使用するものから、 git
1 つを使用するものに変換する予定です。
以前は を使用していましgit-svn
たが、チーム全体が に移行されgit
、その移行の先頭に立つよう求められました。ほとんどの動きを理解できてうれしいですが、まだ解決していない側面が 1 つあります。
私の構成リポジトリの 1 つのディレクトリは、スタンドアロンの Windows マシン上の外部アプリケーションのスクリプト ディレクトリを追跡するために常に使用されています。そのアプリケーションのスクリプト ディレクトリは、アプリケーション インストール ディレクトリ内にあるためsvn
、適切な時点でそのディレクトリのみをチェックアウトしました。
私はその構造を維持できることを望んでいましたが、私の研究では、狭いクローンでgit
は同じ相対的な構造を維持する必要があることが示唆されており、私の場合は難しいでしょう.
myrepo:config/scripts
明確にするために、の内容をにマップしたいと思いC:\application\scripts
ます。
私が見る限り、いくつかのオプションがあります。
1. これらのスクリプト ファイルには別のリポジトリを使用します。
リポジトリを正確に正しい場所に複製できるため、これがおそらく好まれます。
残念ながら、現在、構成データ (これらのスクリプトが何であるか) を構成ディレクトリ以外の場所に保存できる構造はありません。そのため、これには、私たちが望んでいたからsvn
への直接の変換を超えて、リポジトリの再構築が必要になります。git
2. 接合点を使用します。
Ger4ish がunix でシンボリック リンクを使用することを提案しているようgit
に、ディレクトリの作業コピーを別のconfig
場所に置き、C:\
ジャンクション ポイントを使用してディレクトリをアプリケーション ディレクトリのサブディレクトリとして表示することができます。
残念ながら、私はそのマシンへの管理者アクセス権を持っていないため、これは最初に表示されたほど単純ではありません。
その他のオプション?
私が見逃したオプションがあるのだろうか。
Git 1.7.0 のスパース チェックアウトに関する質問への回答をお探しですか? 私はいくつかの方法を得ることができますが、特定の位置にチェックアウトする必要性と組み合わせて構造を同じに保つという要件は、この方法が機能しないことを意味します.
git - 除外されたGitスパースチェックアウト
このスレッドによると、Gitのsparse-checkout
機能の除外が実装されることになっています。それは...ですか?
私が次の構造を持っていると仮定します。
presentations/heavy_presentation
残りをチェックアウトに残したまま、チェックアウトから除外したいと思います。私はこれを実行することができませんでした。これの正しい構文は何ですか?
git - hgネストされたリポジトリ設定
Mercurialプロジェクトにサードパーティのネストされたgitリポジトリがあり、このリポジトリのローカル設定(スパースチェックアウト)をチームと共有したいのですが、これを自動的に行う方法はありますか?
/repo/nestedrepo/.git/info/sparse-checkout <-これはローカル設定ファイルですが、チームの全員が親リポジトリをプルするときに取得するようにします。
ありがとう
svn - ジェンキンスのチェックアウト中にディレクトリを除外する
トランクの下に 20 個のディレクトリがあります
Jenkins のチェックアウト時に任意のディレクトリを除外する (含めない) 方法。たとえば、トランクの下に/trunk/a3/b1を除くすべてのディレクトリを配置したい場合は、 どうすればよいですか?
SVN checkout ignore フォルダーで既に回答を見つけましたが、これは Jenkins では不可能です。除外したいディレクトリを除いて、トランクの下のディレクトリの数がわからない、はるかに単純なソリューションが必要です。
また、カスタム svn チェックアウトを追加する方法。svn コマンド ライン ツールを実行してチェックアウトを実行するとします。
git - JenkinsとGitのスパースチェックアウト
Gitに大きなリポジトリがあります。プロジェクトからサブフォルダーを1つだけチェックアウトするジョブをJenkinsで作成するにはどうすればよいですか?
git - 除外されたファイルが git sparse チェックアウトに繰り返し表示されるのはなぜですか?
私はGCC git ミラーを使用しています。C と C++ のフロント エンドしか使用していないため、git のスパース チェックアウト機能を使用して、必要のない何百ものファイルを除外しています。
これはしばらくは機能しますが、時々、除外されたファイルの一部が返されていることに気付きます。
ファイルがいつ再表示されるか正確にはわかりません。さまざまなブランチ (リモート追跡とローカルの両方) に何度も切り替えており、非常に忙しいレポであるため、頻繁にプルする新しい変更があります。
gitの比較的初心者として、作業ツリーを「リセット」してそれらのファイルを再度削除する方法がわかりません。
実験として、sparseCheckout を無効にしてプルしてみました。後で sparseCheckout を再度有効にして、何らかの方法でツリーを更新できると考えましたが、うまくいきませんでした。
どうやら、私が要求したことのないファイルにローカルで変更を加えたようで、AFAIKが触れたこともありません!
しかし、git status
それらの変更は表示されません:
試してみましgit read-tree -m -u HEAD
たが、何もしません。
だから私の質問は:
- ファイルが再表示されるのはなぜですか?
- それらを再び非表示にするにはどうすればよいですか?
- 彼らが戻ってくるのを防ぐにはどうすればよいですか?
これは、私のファイルに、ファイル内で除外される (つまり、 で名前が付けられている)
.git/info/exclude
はずのディレクトリ内のファイルへの参照が含まれているという事実に関連している可能性がありますか? 指示に従って、SVNと同じファイルを無視しました!
sparse-checkout
$ git svn show-ignore >> .git/info/exclude
したがって、私のexclude
ファイルには次のようなパスが含まれています
sparse-checkout
ファイルで名前が付けられたディレクトリのいずれかの下になります。
いくつかのコピーを複製してそれぞれを編集し、ブランチを作成/切り替え/削除し、それらの間で変更をマージするテストリポジトリで問題を再現しようとしましたが、私のおもちゃのテストケースでは決してうまくいきません。GCC リポジトリは少し大きく (2GB 以上)、「失敗」の間隔 (1 ~ 2 週間程度) が長すぎて、人々が問題を正確に再現しようとすることは期待できません。とで同じパスを使用することは試していません。競合が発生する可能性があることは、今日だけに思い浮かびました。sparse-checkout
exclude
数週間前に #git on freenode でこれについて尋ねたところ、IIRC は基本的に「おそらくバグであり、誰もスパース チェックアウトを使用していない」と言われましたが、より良い答えを期待しています ;-)
アップデート:
問題が実際に発生するのを最近見たとき (つまり、ファイルがそこになく、単一のコマンドの後に表示された) は、上流のオリジンからプルを実行していました。
表示された変更の中には、次の名前の変更が含まれていました。
必要に応じて、プルの前にlibgo
ディレクトリは存在しませんでした。dir が存在し、これらのファイル (およびその他のファイル) がその下にあることをプルした後:
名前を変更したファイルのskip-worktree
ビットが失われたかどうかわかりません。どうすれば確認できますか?
libgfortran/ChangeLog
たとえば、上記の例に示されているファイルは新しいファイルではないか、最近名前が変更されたものではないため、名前が変更されたときに常に問題が発生するとは限りません。
git - gitでサブディレクトリのみのクローンを作成する
サブディレクトリを含むgitリポジトリがあります。dirA/dirBの例。git clone
Unixサーバーでサブディレクトリ(dirB)からファイルのみをプルする方法はありますか?
これを行うクローン以外のgitコマンドはありますか?
特定のファイルをGitするにはどうすればよいですか?