大容量ファイルのアップロード(LFS)を使用する

Prev Next

Classic/VPC環境で利用できます。

Gitリポジトリにアップロードできるファイルの容量は最大500MBまでですが、Git Large File System(LFS)を活用すると Gitリポジトリで大容量ファイル(ファイル当たり最大5GB)のバージョン管理を行えます。Git LFSは大容量ファイルのメタデータ(metadata)のみをリポジトリにコミットし、実際のファイル内容は別途のリモートリポジトリに保存する方式で動作します。

Git LFSを使用するためのシステム要件

Git LFSを使用するには Gitクライアントと Git LFSをローカル PCにインストールします。

  • GIT公式サイトから Gitクライアントのインストールファイルをダウンロードしてインストールし、詳細な使用方法を確認します。
  • GIT LFS公式サイトから Git LFSインストールファイルをダウンロードしてインストールし、詳細な使用方法を確認します。
  • Git LFSは HTTPS接続のみ対応し、SSH接続は対応しません。
参考
  • 共通プロジェクトのために Git LFSを適用されたリポジトリをシェアする場合、すべてのプロジェクト構成員がローカル PCに Git LFSをインストールし、Git LFSの仕組みと使用方法を熟知してください。
  • Git LFSがインストールされていないローカル PCでは、LFS機能を使用した大容量ファイルの管理およびファイルロックは行えません。
  • Git LFSをダウンロードしてインストールした後は、以下のようにタスク中のリポジトリパスで Git LFSを初期化してください。
    $ git lfs install
    
    Git LFS initialized.
    

大容量ファイルのアップロード

Git LFSを使用して大容量ファイルをアップロードする方法は、次の通りです。

本ご利用ガイドではローカルリポジトリで Git LFSを初期化した後、特定ファイルのトラッキングを設定してリモートリポジトリにアップロード(push)する方法を簡単なユースケースで説明します。Git LFSの使用方法に関する詳細は、GIT LFS公式サイトをご参照ください。

  1. ローカル PCで Git Clientを起動した後、タスクを行うリポジトリパスに移動します。

  2. Git LFSを初期化します。

    $ git lfs install
    
    Git LFS initialized.
    
  3. アップロードする大容量ファイルにトラッキングを設定した後、.gitattributes ファイルをコミットリストに追加します。

    • ワイルドカード(*)を使用して複数のファイルを指定できます。
    • .gitattributes ファイルにはファイルのトラッキング履歴が記録されます。
    $ git lfs track "*.psd"
    Tracking "*.psd"
    
    $ git add .gitattributes
    
  4. アップロードする大容量ファイルをコミットした後、リモートリポジトリにアップロード(push)します。

    $ git add sample.psd
    
    $ git commit -m "Added design file"
    
    $ git push origin master
    
参考
  • 大容量ファイルをアップロードしている途中に時間オーバー(i/o timeout)エラーなどが発生する場合、以下のように待機時間を延長できます。
    $ git config lfs.activitytimeout 300
    
  • ファイルアップロードが完了した後は、SourceCommitリポジトリの [Code] タブでトラッキングが設定された大容量ファイルが LFS形式で保存されていることが確認できます。

ファイルロック

Git LFSのファイルロック(lock)機能を使用すると、特定アカウントを使用する場合にのみロックしてファイルを変更またはアップロードするように設定できます。

参考
  • ファイルロック機能は、Git LFS 2.0以降のバージョンでのみ使用できます。
  • Gitクライアントがファイルのロック状態を正常に認識させるには、ユーザーのローカル PCリポジトリでファイルロック機能を設定します。

ファイルロック機能を設定する方法は、次の通りです。

$ git config lfs.{Git URL}/info/lfs.locksverify true
参考
  • ファイルロック機能を設定したアカウントでのみファイルロック機能を解除できます。

  • ロック機能を設定していない場合、別のアカウントでロックされたファイルをアップロードする場合も警告メッセージとともにアップロードされるなど、ファイルロック機能が正常に動作しないことがあります。

    $ git push origin master
    
    Locking support detected on remote "origin". Consider enabling it with:
    $ git config lfs.{Git URL}/info/lfs.locksverify true
    Unable to push locked files:
    
    test.txt - psr (refs: master)
    WARNING: The above files would have halted this push.
    

ファイルロックの使用例

ファイルロックを有効化した後は、ファイルロック機能を設定したサブアカウントでのみファイルのアップロードやファイルロックを解除が行えます。

  • 「サブアカウント1」でロック設定

    $ git lfs lock "test.txt"
    Locked test.txt
    
    $git lfs locks
    test.txt {sub_account_name} ID:15
    
  • 「サブアカウント2」でファイルアップロード(エラー発生)

    $ git add test.txt
    
    $ git commit -m "Modify file"
    
    $ git push origin master
    Unable to push locked files:
    * test.txt - {sub_account_name} (refs: master)
    ERROR: Cannot update locked files.
    

ファイルロック設定解除の例

  • 「サブアカウント1」でロック設定解除(解除成功)

    $ git lfs unlock test.txt
    Unlocked test.txt
    
  • 「サブアカウント2」でロック設定解除(エラー発生)

    $ git lfs unlock test.txt
    test.txt is locked {Sub Account1}
    

Git LFS Object Storage連携

Object Storageのバケットを SourceCommitサービスと連携して LFSアップロードファイルを顧客の Object Storageバケットにアップロードできます。

参考
  • Git LFSを使用しないアップロードとダウンロードのデータについては、Object Storageバケットに保存しません。

Object Storage連携設定

SourceCommitサービスの Object Storage連携設定方法は、次の通りです

  1. NAVERクラウドプラットフォームコンソールで、 i_menu > Services > Developer Tools > SourceCommit メニューを順にクリックします。
  2. SourceCommit画面で [Object Storage連携設定] ボタンをクリックします。
  3. Object Storage連携設定のポップアップで、連携するバケットを選択します。
  4. Object Storage連携設定のポップアップで [設定] ボタンをクリックします。
注意
  • 連携が設定されたバケットを削除する場合、自動で連携が解除されます。
  • Object Storageコンソールなどによるデータ直接変更を制限しておらず、変更する場合は正常に動作しないことがあります。
参考
  • 当該バケットに連携有効化中のリポジトリが存在する場合、バケットを変更できません。
  • ロックバケットの場合、バケット連携はサポートしません。

リポジトリ Object Storageバケットの有効化

リポジトリに Object Storageのバケット連携するには、リポジトリ設定でバケット使用を有効にする必要があります。バケットの有効化方法は次の通りです。

  • 「リポジトリ作成」、「リポジトリコピー」によりリポジトリの開始時に設定する方法は、SourceCommit を開始するをご参照ください。
  • 「リポジトリ設定」により設定する方法は、リポジトリの管理をご参照ください。
参考
  • リポジトリの Object Storageバケット有効化設定を有効にするには、SourceCommitサービスが Object Storageバケットと連携している必要があります。
  • リポジトリの Object Storageバケット有効化ステータスから無効になっても、既存のバケット内に保存したデータは削除されません。

既存の LFS使用顧客がバケットにアップロードする方法

既存の LFS使用顧客が Object Storageバケットを有効化してストレージを移動する方法は、次の通りです。

注意

安全に移行するため、事前にデータをローカルにバックアップすることをお勧めします。

  1. 既存の保存場所に保存された全体 LFSバイナリデータをローカルにダウンロードします。
    $ GIT_LFS_SKIP_SMUDGE=0 git clone <repository-url>
    or
    $ git lfs pull (if repository already exist)
    
  2. リポジトリの Object Storageバケット連携を有効にします。
  3. LFS trackステータスの全体バイナリデータを Object Storageに再度アップロードします。
    $ git lfs push origin --all
    
  4. Object Storageバケットコンソールによりアップロードされたデータを確認します。