당신의 잔디 상태는 어떠신가요?
매일매일 잔디가 심어져서 푸르디 푸른 초원을 만드셨나요?
그럼 다행이군요!
하지만, 하루라도 커밋 푸시를 까먹거나 했을 때 비어버린 잔디를 보면
우리들의 마음은 어떤가요?
억장이 와르르 무너지고 있지는 않으신가요?
그런 당신을 위해 준비했습니다.
Git Repository에 자동으로 개발일기(사실 구색 맞추기용)를 커밋 푸시 해주는 프로그램 !
잠들기 전, 혹은 컴퓨터를 키고 당신의 클릭 한번으로 커밋 푸시를 해결해봅시다.
귀찮으시면 깃에 들어가서 받아서 쓰셔도 됩니다.
https://github.com/watashijxxnsuka/auto_commit_diary
1 .간단한 준비물.
- VSCode or 파이썬 에디터
- Git 계정.
- 매일 클릭한번. (이것도 귀찮으면 윈도우 작업 스케줄러 설정)
정말 간단하지 않나요?
자 우선, Git 계정이 있다는 가정 하에 시작하도록 하겠습니다.
2. 프로그램 생성 전, 간단한 사전준비.
파일들이 올라갈 개인 Repository를 하나 생성해줍니다.
그리고 원하는 위치에 폴더를 하나 생성해주고,
간단하게 git 설정만 해주도록 합시다.
git init
git remote add 당신의레포지토리주소
git branch -m main
3. 간단하게 파이썬으로 코드 작성.
새로운 파이썬 파일을 하나 만들어줍시다.
파일명은 auto_commit.py
import os
import subprocess
from datetime import datetime
def find_git_root(start_path="."):
cur_path = os.path.abspath(start_path)
while cur_path != os.path.sep:
if os.path.isdir(os.path.join(cur_path, ".git")):
return cur_path
cur_path = os.path.abspath(os.path.join(cur_path, os.pardir))
raise FileNotFoundError(".git directory not found")
# 1. Git 리포지토리 루트로 이동
repo_dir = find_git_root()
os.chdir(repo_dir)
# 2. 파일 생성하기
date_str = datetime.now().strftime('%Y-%m-%d')
filename = f"develop_diary_{date_str}.txt"
with open(filename, 'w') as file:
file.write(f"Develop diary entry for {date_str}.")
# 3. Git add, commit, push
subprocess.run(["git", "add", "."])
commit_message = f"Auto-commit: Develop diary entry for {date_str}"
subprocess.run(["git", "commit", "-m", commit_message])
subprocess.run(["git", "push"])
그냥 이해하기 귀찮으시면 넘어가셔도 괜찮습니다.
지금부터 하나하나 설명드리겠습니다.
find_git_root 함수 정의
- cur-path 로 start_path 의 절대 경로로 초기화.
- 현재 경로에서 .git 폴더가 있는지 확인.
- .git 폴더가 있으면 그 경로를 반환하고, 없으면 상위폴더(os.pardir)로 이동하며 반복.
- 최상위까지 찾지 못했으면 FileNotFoundError로 예외처리.
Git Repositoy 루트로 이동
- find_git_root() 함수 호출 후 .git 폴더가 있는 루트 디렉토리 경로 찾기.
- os.chdir(repo_dir)를 사용해서 루트 디렉토리로 변경
- 위 작업을 통해서 모든 파일 생성과 Git 명령어가 루트 디렉토리를 기준으로 수행된다.
날짜가 포함된 파일 생성
- datetime.now().strftime('%Y-%m-%d')는 현재 날짜를 YYYY-MM-DD 형식의 문자열로 변환.
- with open(filename, 'w') as file:을 통해 해당 이름의 파일을 작성 모드로 엽니다. 파일이 없으면 새로 생성됩니다.
- file.write()를 통해 파일에 간단한 텍스트(Develop diary entry for YYYY-MM-DD)를 작성합니다.
Git 명령어 실행
- git add .: Git 리포지토리 내에서 변경된 모든 파일을 추가.
- git commit -m: 추가된 파일을 커밋.
- git push: 커밋된 내용을 원격 저장소에 푸시
자 이렇게, 코드에 대한 설명은 끝났습니다.
이제 만들었는데 이걸 어떻게 실행하냐구요?
매번 VSCode 나 에디터로 들어가서 실행해야하냐구요?
절대 아니죠.
이제 우리가 매일 사용하는 .exe 파일로 변환하는 작업을 가집니다.
파이썬은 프로그램 쉽게 만들 수 있어서 너무 좋아요 홍홍.
4. .exe 파일로 생성
생성해둔 폴더로 갑시다.
마우스 우클릭 후 '터미널에서 열기' 클릭.
밑에 있는 코드를 한줄씩 실행해줍시다.
pip install pyinstaller
pyinstaller --onefile auto_commit.py
그러면 pyinstaller 먼저 설치 후,
pyinstaller를 통해서 실행 파일을 생성하게 됩니다.
그럼 아마 여러분의 폴더는 이런 형태를 띄고 있을겁니다.
develop_diary 파일을 제외한
build, dist, auto_commit.spec 파일이 생겼을 겁니다.
왜 exe 파일이 없지?
dist 폴더에 생성되어 있기 때문이죠.
dist 폴더로 들어가서 보면
auto_commit.exe 파일이 있습니다.
위험한 파일 아니고, 직접 만드신 파일이니까 안심하고 열어봅시다.
이제 모든 과정은 끝났습니다.
혹시나 자동으로 커밋 푸시가 안된다면,
git bash를 열어주시고
처음에 한번만 수동으로 업스트림 설정을 해주면 됩니다.
git push --set-upstream origin main
이 명령어는 로컬 main 브랜치를 원격 저장소의 main 브랜치와 연결하고
이후 git push 명령어를 실행할 때마다 자동으로 이 브랜치로 푸시하게 해줍니다.
이것까지 끝냈으면 진짜 끝입니다.
당신의 잔디 탈모 걱정?
모두 해결.
5. 하지만, 매번 폴더로 들어오기도 귀찮은 당신을 위한 바로가기.
dist 폴더에 있는 auto_commit.exe 파일의 바로가기를 만들어주시고,
바탕화면에 투척해서 편하게 쓰시면 됩니다.
5. 하지만하지만, 매일 클릭도 귀찮은 당신을 위한 윈도우 스케줄러.
저는 개발자의 삶을 살기로 결정했지만 ...
하지만 아직까지도 저는 컴퓨터의 자동화를 불신하는 이상한 인간입니다.
따라서, 저는 매일 클릭으로 혹시나 오류가 발생하거나
제대로 커밋 푸시가 안되는 걸 확인해야 적성에 풀려서 사용하지는 않지만,
컴퓨터를 믿고, 모든게 귀찮다면, 윈도우 스케줄러에 등록해버리면 됩니다.
이번 글에서는 따로 쓰진 않았지만...
혹시나 스케줄러 설정 필요하신분은 알려주시면
다음에 별도로 글 작성해드릴게요 !
그럼, 당신의 잔디 탈모를 지킨 용사는 이만 프로젝트 하러 도망가겠습니다.
모두 행복한 잔디생활 하시길 ...