[GIT] gitcontents 설명

original link :
https://github.com/joliver/SourceServer-GitExtensions/blob/master/InSystemPath/gitcontents.bat
@echo off

if ()==(%1) exit /b
if ()==(%2) exit /b
if ()==(%3) exit /b
if ()==(%4) exit /b

setlocal
set GIT_NODE_URL="%~1"
set GIT_NODE_URL=%GIT_NODE_URL: (fetch)=%
set GIT_WORKING_DIR="%~2"
set GIT_OBJ_ID="%~3"
set GIT_CONTENTS_OUTPUT="%~4"

if exist %GIT_WORKING_DIR% goto update

md %GIT_WORKING_DIR%
git --git-dir=%GIT_WORKING_DIR% init
git --git-dir=%GIT_WORKING_DIR% fetch %GIT_NODE_URL%
goto show

:update
for /f "usebackq delims=" %%i in (`git --no-pager --git-dir=%%GIT_WORKING_DIR%% show %%GIT_OBJ_ID%%`) do ( goto show )
echo *Updating...*
git --git-dir=%GIT_WORKING_DIR% fetch %GIT_NODE_URL%

:show
if not exist %~dp4 mkdir %~dp4
git --no-pager --git-dir=%GIT_WORKING_DIR% show %GIT_OBJ_ID% > %GIT_CONTENTS_OUTPUT%

:cleanup
endlocal

%~1 : ssh 연결 주소
%~2 : temp git repository 저장 경로
%~3 : git object id
%~4 : 출력된 소스 파일 전체 경로

%~1의 ssh 연결 주소의 ID가 잘못 들어오는 경우에만 ID를 강제로 설정해서 사용하면 된다.
%~2의 temp git repository를 현재 사용중인 git 저장소로 사용하지 않는다.
git 저장소에 git object가 없을때 fetch로 서버에서 받아와야 하는데, 이 부분을 고치면 받아올 수 없다.
fetch를 해서 볼 수 없으므로
2013/06/05 02:58 2013/06/05 02:58

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요