2011-10-28 21 views
0

githubといくつかのブランチにリポジトリがあります。レポは約2ギグです。 gitに移る前に、私はsvnリポジトリからフォルダをチェックアウトし、バイナリファイルを作成してからリポジトリにコミットするantスクリプトを用意しました。GITのリモートブランチからフォルダを取得する方法

残念ながら、gitに切り替えた後、私はそれを行う簡単な方法を見つけることができません。私のantスクリプトが実行されるたびに、リモートブランチからフォルダの新しいコピーを取得し、何らかの作業をした後でそれにコミットする必要があります。私はantスクリプトを実行するたびに全面的なrepsitory(2 GBのデータ)をダウンロードしたくありません。ここで

  • SVNはhttp://branch15/subfolder/subfolder/subfolder
  • TO BACK COMMIT私のAntスクリプトは、/サブフォルダ/サブフォルダ/サブフォルダ内のいくつかのものを変更 http://project.branch15/subfolder/subfolder/subfolder
  • FROM

    • SVNチェックアウトSVNに見えた方法の例です

      GITワークフローの場合

      • GIT INIT
      • GITのCLONE http://project.branch15(2ギガバイト)
      • に/サブフォルダSOME STUFFを変更/サブフォルダ/サブフォルダ
      • は、分岐をCOMMIT 15
  • +1

    を行うことができ、サブモジュールであれば、あなたは他の*どこかのバイナリファイルを保存する考えがあります*あなたのソースリポジトリよりも? –

    +0

    はい、別のサブリポジトリにあるファイルを分割すると、ソースファイルとビルドファイルのバージョン番号が異なり、別々に管理されるため、バージョンに戻すのが難しくなります。したがって、バージョン13に戻すと言うことはできません(ソースファイルとバイナリファイルの両方について) – freakyshaggy

    +2

    **毎回**クローン**を実行しないで、一度実行してください!ローカルリポジトリからディレクトリを抽出してください –

    答えて

    2

    これは、1つのリポジトリにたくさんのものがあるようです。サブモジュールを使用するようにリファクタリングする必要があります。 *祖先や兄弟から独立して生きることができる以上のフォルダがあれば、それはサブモジュールの良い候補です。

    Gitサブモジュール自体がgitリポジトリであるため、クローン、チェックアウト、変更、親リポジトリとは独立したプッシュが可能です。

    サブモジュールの階層を持つこともできます。したがって、あなたの例では、各サブフォルダはサブモジュールになる可能性があります。 (ただし、上記に注意する必要があります*)。

    このアプローチのもう1つの利点は、メインリポジトリ(2GBかもしれない)をクローンし、2GBまでを使わずにいくつかのサブモジュール(たとえば〜200MBの10個)で構成されていると仮定することです。次に、あなたが望むリポジトリのサブモジュールチェックアウトを実行することができます。ここで

    は一例です:

    ファイル構造が

    /MainApp/   
         /Utils 200MB 
         /Lib  
    ^  /OSX 200MB 
    ^  /WIN32 200MB 
    ^  /WIN64 200MB 
    ^  /NIX 200MB 
         /Source 150MB 
           ===== 
           1.15GB 
    

    ^フォルダは、それぞれ次の

    $ git clone MainApp 
        # Downloads the 200MB for Utils and the 150MB for Source (plus git files) 
    $ cd MainApp 
    $ git submodule update /Lib/OSX 
        # Downloads the 200MB OSX folder 
    
    +0

    のようになります私がSVNでやっていたことは、痛みのビットである既存の構造を(前の答えで示唆されているように)リファクタリングすることです。私はあなたが有用な例を提供したので、答えとしてあなたのコメントを受け入れました。 – freakyshaggy

    0

    あなたはこれを行うことができない、これはどのようにGitのではありません働くリポジトリをあなたのコンピュータにクローンし、変更して、&をコミットしてから、別のリポジトリに戻してください。

    あなたのプロジェクトがサイト上のファイルの編集をサポートするGitHubのようなサービスを利用していた場合は、それをする必要はありません。サイト上のファイルを変更することは非常に簡単です。

    このような大きなリポジトリではなく、そのリポジトリをさまざまなサブリポジトリに分割することを検討しましたか?

    +0

    方法が必要です。 – freakyshaggy

    +0

    はい、異なるサブリポジトリにあるファイルを分割すると、ソースファイルとビルドファイルのバージョンが異なるため、元のバージョンに戻すことが本当に困難になりますバージョン番号とそれとは別に管理されているので、バージョン13に戻すことはできません(ソースファイルとバイナリファイルの両方に対して) – freakyshaggy

    +0

    サブモジュールでも簡単に元に戻すことができます。 – Will

    関連する問題