개발 이야기

patch git branch 자동화 스크립트 만들기

ANDYLION 2023. 7. 28. 16:17
728x90
반응형

 

대규모 프로젝트에서 개발업무를 진행하다 보면 버그나 휴먼 에러 등 다양한 이슈 발생으로 패치를 생성한다.

그리고 프로젝트를 위한 패치리스트를 모아두어 관리하는 git이 존재하게 된다.

만약 내가 개발한 내용을 모든 프로젝트에 반영해야 하는데 각 프로젝트의 패치 git을 remote에서 다운로드한다고 생각해 보자.

모든 git 주소를 다 알지도 못할 뿐더러 git주소를 확인하기 위해 또 문서를 뒤져야 한다.

시간 낭비를 줄이고 귀차니즘을 없애기 위해 앞으로는 다운로드 후 프로젝트에 바로 적용할 수 있도록 스크립트를 만들기로 결심하고 5분 만에 test script파일을 만들었다.

테스트 결과 성공적이었다. 앞으로 브랜치명과 패치 git을 다운받을 위치만 지정해주면 알아서 해당 프로젝트에 패치git 다운로드 및 적용이 가능하게 되었다.

#!/bin/bash

patch_path=/home/user/project/project_name/
branch_name=patch


echo $patch_path
echo $branch_name

cd $patch_path
git clone {project_patch_ssh_addr}.git -b $branch_name


# project repo init
pushd $patch_path
repo sync -j8
popd

# apply patch 
pushd $patch_path/patch_git
./apply_patch.sh $branch_name $patch_path
popd

 

반응형

 

근데 이 쉬운 걸 여태 왜 안 하고 살았던 걸까... 아마도 이슈 검토 및 개발업무에 치여서 생각조차 못했던 것 같다.

나는 바보인가 오늘도 자책해 본다.

 

추가로 기존 정보를. config에 저장하고 관리하며, 스크립트 실행 시 path와 branch name을 읽어와서 자동화하는 방식을 추가하였다.

역시 잘된다. 앞으로 patch git을 당겨올 때 스크립트 한방으로 프로젝트에 적용하는 것까지 가능하게 된다. 

 

#!/bin/bash

# check previous build info
config_file="./patch_git.config"
config_new=0

if [ -e $config_file ]; then
  array=('cat $config_file')
  patch_path=${array[0]}
  branch_name=${array[1]}
  config_new=1
  echo $patch_path
  echo $branch_name  

  echo "Continue previous build config? (y/n)"
  read input
  case $input in
    n ) config_new=0 ;;
    N ) config_new=0 ;;
    * ) ;;
  esac
fi

# patch_git.config is not existed
if [ $config_new == 0 ]; then
  patch_path=""
  branch_name=""
  read -p "Enter the path to download the patch git (e.g. ${HOME}/project_root): " patch_path
  read -p "Enter the branch name (e.g. branch -av): " branch_name
fi


cd $patch_path
git clone {project_patch_ssh_addr}.git -b $branch_name

# repo init
pushd $patch_path
repo sync -j8
popd

# apply patch list
pushd $patch_path/patch
./apply_patch.sh $branch_name $patch_path
popd

스크립트 돌려놓고 커피 한잔의 여유가 또 생겼다.

 

728x90
반응형
SMALL