발생한 문제
- 내가 작성한 코드들이 특정 시간에 자동으로 커밋되도록 하고 싶은데, git에는 예약 기능이 없다.
- 리눅스/유닉스 계열 OS에선 쉘 스크립트(.sh)를 만들고 cron이라는 작업스케쥴러를 이용하여 예약기능을 어느정도 구현할 수 있다던데, 문제는 현재 사용하는 OS가 window다. 나는 리눅스는 몰라도 window OS에 대해서 공부한 적은 없다...
목표
- 이상적인 목표: git의 명령어들을 저장해놨다가 정해진 시간에 동기화하여 실행하고 싶다.
- 최소 목표: 로컬파일들이 정해진 시간에 로컬에 커밋되도록 하고 싶다.
commit 예약기능은 왜 아직도 안 나왔는지 모르겠다. 1일 1커밋을 실천하려는 사람, 휴가 때도 커밋 이력을 남기고 싶은 사람, 그냥 안전하게 백업을 자동화하고 싶은 사람... 기타 등등 많은 사람들이 이 기능을 원할텐데 말이다. 아무튼 이것저것 검색해보고 공부해본 끝에 나름대로 방법을 찾아냈다.
해결하기
어디서 부터 시작하지...?
일단 생각해낸 컨셉은 이렇다. 리눅스/유닉스 계열에서 구현하는 방식과 유사하게 구현해보는 것이다.
필요한 과정을 크게 두 단계로 나누었다.
1. git 명령어들을 모아서 실행하는 스크립트 파일을 만들기.
2. 스케쥴러를 이용해서 특정 시간에 스크립트 파일을 실행하도록 스케쥴링.
git 명령어들을 모아서 실행하는 스크립트 배치 파일(.cmd)을 만들기.
윈도우 OS에 대해선 잘 몰라서 일단 그런 스크립트 파일이 있기는 한지 찾아봤다. 찾아보니 다행히 있다!
'.cmd' 라는 파일이 '.sh' 역할을 한다고 한다. 윈도우의 .bat파일도 하는 일이 거의 동일한데 windows NT이후에 사용하는 파일은 .cmd라고 한다. Okay Okay 그럼 이 .cmd파일을 만들어본다.
일단 아무데나 '.cmd'로 이름이 끝나는 파일을 만든다. 그리고 코드 편집기로 실행하고자 하는 명령어들을 작성하고 저장한다. 코드 편집기는 notepad든 vscode든 아무거나 써도 된다. 나같은 경우 "commit.cmd"라는 파일을 만들고 위와 같은 명령어를 작성했다. 명령들을 간단하게 설명하면 이렇다.
- working directory를 commit하려는 폴더로 옮기고
- add와 commit을 실행한다.
- 그리고 마지막에 pause로 프롬프트가 그냥 꺼져버리는 걸 방지했다.
*그리고 꼭 기억할 것!
명령어에 한글이 들어간다면(예를 들면 경로에 한글이 들어가는 경우) 인코딩을 반드시 EUC-KR로 바꾸고 저장해주자. 대개 아무 설정없이 파일들을 저장하면 UTF-8로 저장될텐데 그러면 명령프롬프트에서 한글을 잘못 읽는다. 왜냐하면 윈도우 명령프롬프트는 (짜증나게도) UTF-8을 사용하지 않고 EUC-KR(혹은 cp949)로 인코딩된 문자를 사용하기 때문이다.
스케쥴러를 이용해서 특정 시간에 스크립트 파일을 실행하도록 스케쥴링
윈도우 좌측 하단에서 작업 스케줄러를 검색해서 실행하자.
결과
일요일 오후 6시 30분이 되니까 명령 프롬프트 창이 잠시 켜지면서 프로그램이 실행된다. 이걸로 문제해결 완료!
'잡다한 문제 해결' 카테고리의 다른 글
opeaAI에서 api key가 disabled 되었다고 이메일이 와요. (0) | 2024.02.12 |
---|---|
한 프로세스가 여러 개의 포트와 동시연결될 수 있을까? (0) | 2023.06.09 |
티스토리에서 자꾸 502 bad gateway 에러가 나요 (0) | 2023.05.16 |