[Shell Script] gitkeep 생성 자동화

쿨쿨이·2024년 4월 25일

Shell Script

목록 보기
1/1

.gitkeep

.gitkeep 이란?

gitkeep 파일은 비어있는 디렉토리를 추적하여 보존하기 위한 파일이다.
기본적으로 Git에서는 빈 디렉토리를 추적하지 않으므로, 빈 디렉토리를 생성하고 커밋하려고 하면 커밋이 되지 않는다. 이 때, .gitkeep을 사용하면 빈 디렉토리도 커밋할 수 있게 된다.

.gitkeep : 비어 있는 폴더를 보존하기 위한 파일

참고로, gitlab에서 '새 디렉토리 만들기' 기능을 사용해 디렉토리를 만들면, 이 파일이 생성되어 빈 디렉토리를 만들 수 있다.

.gitkeep 파일 사용 방법

# 1. 빈 디렉토리 생성
mkdir <폴더명>

# 2. 생성된 디렉토리 안에 .gitkeep 파일 추가
touch <폴더명>/.gitkeep

# 3. .gitkeep 파일을 git에 추가하고 커밋
git add <폴더명>/.gitkeep
git commit -m "빈 디렉토리 추가"

Shell Script 자동화

.gitkeep 파일을 일일이 수동으로 만들지 않고, 자동으로 생성하기 위한 쉘스크립트를 작성하려 한다.
고려할 기능은 다음과 같다.

  1. 파라미터로 대상 디렉토리 입력 받기 ( 실행 예시 : $ ./gitkeep.sh <폴더명> )
  2. 대상 디렉토리의 하위 디렉토리에서 빈 디렉토리 찾아내기
  3. 빈 디렉토리에 .gitkeep 파일 생성하기 ( 실행 예시 : touch <폴더명>/.gitkeep )
  4. 모든 하위 디렉토리에 대해 수행

Source Code

Version 1. find 명령어 활용

#!/bin/sh

if [ $# -ne 1 ]
then
        echo "Usage: $0 <directory name>"
        exit 1
fi

find $1 -empty -type d -exec touch {}/.gitkeep \;

Version 2. 함수와 반복문 사용

#!/bin/sh

# Define Function
iterate_dir()
{
        filelist=`ls -A $1`
        for file in $filelist
        do
                filelist=`ls -A $1/$file`
                if [ "$filelist" = "" ];
                then
                        echo "Create $1/$file/.gitkeep"
                        touch $1/$file/.gitkeep
                elif [ -d $1/$file ]
                then
                        iterate_dir $1/$file
                fi
        done
}

if [ $# -ne 1 ]; # Check the Number of Parameters (1)
then
        echo "Usage: $0 <target path>"
        exit 1
fi

# Call Function
iterate_dir $1

실행 결과

BeforeAfter
BeforeAfter
profile
System Software Developer

0개의 댓글