====== GitのBundleファイル運用 ====== Gitの使い方としてローカルのリポジトリとリモートの共有リポジトリという構成が基本だろう。だが、オンラインでのリポジトリアクセスができない場合がある。こういう時に[[https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E3%83%90%E3%83%B3%E3%83%89%E3%83%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90|Bundleファイル]]を用いてリポジトリ間でデータ同期が可能である。 BundleファイルはGitコマンドで作成したり読み込みができるのだが、何度も行う作業であればスクリプト化してしまうべきであろう。 これらのバッチ/スクリプトをリポジトリ直下に置いて起動すれば、バンドルファイルの作成や読み込みがメニュー選択するだけで実行可能になる。 {{ :bundle.png?400 |}} これらのスクリプトでバンドルファイルを読み込むと、importブランチに反映される。確認して問題が無ければmasterブランチにマージする。 ===== バッチ版 ===== @echo off set BUNDLE=Git-RepoExport.bundle set ARCHIVE_ZIP=Git-Archive.zip set ARCHIVE_TGZ=Git-Archive.tgz :MENU cd %~dp0 echo. echo *** MENU *** echo 1: Verify Git bundle file echo 2: Fetch Git bundle file echo 3: Create Git bundle file echo T: Create Git tgz-archive file echo Z: Create Git zip-archive file echo q: Quit set /P INPUT=">>> " echo. set SELECT=%INPUT:~0,1% if "%SELECT%"=="1" goto SELECT_1 if "%SELECT%"=="2" goto SELECT_2 if "%SELECT%"=="3" goto SELECT_3 if "%SELECT%"=="T" goto SELECT_T if "%SELECT%"=="Z" goto SELECT_Z if "%SELECT%"=="q" goto eof goto MENU :SELECT_1 echo [ Verify Git bundle file ] git bundle verify %BUNDLE% goto MENU :SELECT_2 echo [ Fetch Git bundle file ] git fetch %BUNDLE% master:import goto MENU :SELECT_3 echo [ Create Git bundle file ] git bundle create %BUNDLE% HEAD master goto MENU :SELECT_T echo [ Create Git tgz-archive file ] git archive HEAD --format=tgz -o %ARCHIVE_TGZ% goto MENU :SELECT_Z echo [ Create Git zip-archive file ] git archive HEAD --format=zip -o %ARCHIVE_ZIP% goto MENU ===== shell版 ===== #! /bin/sh # BUNDLE=Git-RepoExport.bundle ARCHIVE_ZIP=Git-Archive.zip ARCHIVE_TGZ=Git-Archive.tgz # # Function menu_list() { n=1 cat << END | while read text *** Menu *** 1) Verify Git bundle file 2) Fetch Git bundle file 3) Create Git bundle file T) Create Git tgz-archive file Z) Create Git zip-archive file q) Quit END do echo "$text" n=`expr $n + 1` done return } # Main menu_list echo -n ">>> " while read input do case $input in 1) echo "[ Verify Git bundle file ]" git bundle verify $BUNDLE ;; 2) echo "[ Fetch Git bundle file ]" git fetch $BUNDLE master:import ;; 3) echo "[ Create Git bundle file ]" git bundle create $BUNDLE HEAD master ls -ld $BUNDLE ;; T) echo "[ Create Git tgz-archive file ]" git archive HEAD --format=tgz -o $ARCHIVE_TGZ ls -ld $ARCHIVE_TGZ ;; Z) echo "[ Create Git zip-archive file ]" git archive HEAD --format=zip -o $ARCHIVE_ZIP ls -ld $ARCHIVE_ZIP ;; q) echo "Bye!" break ;; *) echo "?" ;; esac echo menu_list echo -n ">>> " done