커밋 파일 조회 batch script 작성

김동영·2022년 10월 4일
0

이슈

  • 고객사 개발 레포지토리 기능 적용 시, 운영용 레포지토리에 수동이관하는 환경
  • 이로 인해 이관 자원이 누락되는 이슈가 발생함.
  • 프론트 웹 자원(scss, img 파일 등) 누락의 경우, 빌드를 통해 검출되지 않기 때문에 실제 운영에 배포된 뒤 확인되는 케이스가 종종 발생함.

해결방안

  • 작업중인 레포지토리 내 브랜치 기준 커밋한 파일 목록을 조회할 수 있는 스크립트 작성
  • 수동 이관 전 목록을 출력하여 한번 더 점검한다.(비교대상: 지라 이슈 커밋 히스토리)

개선할 점

  • Git 커멘드 중 cherry-pick 를 통해 개발계 커밋 이력을 운영 레포지토리에 추가시킬 수 있다고 한다.
  • 기능 확인하여 이관 절차에 적용시킬 수 있도록 수정예정

Batch Script

1. 커밋 목록 조회

@echo off
chcp 65001

echo 커밋 목록 조회
echo * 기간 내 커밋한 파일 목록을 조회합니다.
echo * [필수]기간: 조회시작날짜 ~ 오늘
echo * [선택]작성자: 커밋 이력을 조회할 작성자(기본값 본인)
echo * [선택]검색어: 띄어쓰기없이 영어만 입력가능(지라이슈번호 등)
echo * 병합된 목록은 조회되지 않습니다.
echo * 여러번 커밋된 경우, 중복 조회됩니다.
echo.

set since=
set grepKeword=
set author=

if not !%1==! goto setParams

set /p since=검색시작날짜[yyyy-MM-dd]: 
set /p grepKeword=검색어[지라이슈번호 등, 띄어쓰기x]: 
set /p author=작성자[다른 사용자 커밋 조회시에만 입력]: 
goto checkAuthor

:setParams
set since=%1
if not !%2==! set grepKeword=%2
if not !%3==! set author=%3

:checkAuthor
if !%author%==! (
    for /f "delims=" %%a in ('git config user.name') do set author=%%a
)

if not !%grepKeword%==! set grepKeword=--grep %grepKeword%

for /f "delims=" %%a in ('git log --no-merges --pretty^="%%h" --encoding^=utf-8 --author %author% --since %since% %grepKeword%') do (
for /f "delims=" %%b in ('git show %%a --name-only --pretty^=""') do echo %%b
)
pause

2. 커밋 목록 + 히스토리 조회

@echo off
chcp 65001

echo 커밋 목록 조회
echo * 기간 내 커밋한 파일 목록을 조회합니다.
echo * [필수]기간: 조회시작날짜 ~ 오늘
echo * [선택]작성자: 커밋 이력을 조회할 작성자(기본값 본인)
echo * [선택]검색어: 띄어쓰기없이 영어만 입력가능(지라이슈번호 등)
echo * 병합된 목록은 조회되지 않습니다.
echo * 여러번 커밋된 경우, 중복 조회됩니다.
echo.

set since=
set grepKeword=
set author=

if not !%1==! goto setParams

set /p since=검색시작날짜[yyyy-MM-dd]: 
set /p grepKeword=검색어[지라이슈번호 등, 띄어쓰기x]: 
set /p author=작성자[다른 사용자 커밋 조회시에만 입력]: 
goto checkAuthor

:setParams
set since=%1
if not !%2==! set grepKeword=%2
if not !%3==! set author=%3

:checkAuthor
if !%author%==! (
    for /f "delims=" %%a in ('git config user.name') do set author=%%a
)

if not !%grepKeword%==! set grepKeword=--grep %grepKeword%

for /f "delims=" %%a in ('git log --no-merges --name-only --oneline --encoding^=utf-8  --author %author% --since %since% %grepKeword%') do (
echo %%a
)
pause
profile
프레임워크와 함께하는 백엔드 개발자입니다.

0개의 댓글