문득 이런생각이 든게, 프로젝트도 커지고 했는데, 언제까지고 나만 이 프로젝트를 관리하려나 싶어졌다.
(대부분의 한국인들은 editplus나, sftp, ftp를 지원하는 에디터를 이용해 소스를 바로 수정해서 올릴거라 생각한다.
왜냐면 PHP는 별도의 빌드가 필요없기 때문이다. 아니면 별도의 개발서버를 둬서 한번에 다 덮어쓴다던가..)
누군가와 협업하게 된다면 버전관리와 diff 체크를 해야할텐데, 지금까지의 형태론 도저히 답이 안나왔다.
그래서, delpoy를 하는 방법에 대해 찾아보기로 했다.
우선 phpschool 과 생활코딩에 물어보니, php는 빌드가 필요없이 즉각 적용되기때문에 어떻게든 올리기만하면 된단다.
그래서... 다들 따로 관리는 안하는구나 생각했다.
나는 우선 버전관리는 별도의 git 서버를 구축하지 않을것이라 굳게 다짐했기때문에,
github를 이용하기로 했다. private repo를 다섯개를 사용하기때문에 비공개적으로 관리할 수 있을것이라 생각했다.
깃헙을 사용하지 않겠다면 gitlab이나 bitbucket 과 같은 서비스도 있으니 고려할 수 있겠다.
우선 ftp 로 파일을 싹 받고 .gitignore를 설정했다. 자주 바뀌고 추가되는 이미지들은 버전관리할 필요가 없기 때문이다.
http://dolfalf.tistory.com/58
http://trend21c.tistory.com/1471
두곳을 참조해 적당한 룰을 만들면된다.
로컬 세팅은 귀찮음에 의거해 따로 하지 않기로하고, push 관리같은것도 github desktop을 사용하기로 한다.
즉, IDE에서 수정한 내용을 compare하고 push 하는 git의 기능을 그냥 프로그램에 전적으로 (-_-) 의존하기로 해본다.
git사용을 극대화하기 위해서, github에서 만든 atom 에디터를 사용하기로 했다.
atom은 현재 .git와 비교해 달라진 파일, 생성된 파일을 별도로 표시해준다.
내용을 변경했다면 github desktop에서도 확인할 수 있다.
여기서 pull request나 commit을 관리할 수 있다.
이후 sync 버튼을 클릭해 파일을 싱크하고, 해당 작업이 완료되면 서버의 ssh로 들어가 git 명령어를 친다.
서버에서 git 명령어를 사용할 수 있도록 설치되어 있어야한다. (apt-get install git)
SSH등 여러 방법이 있지만 나는 아주 귀찮았기 때문에, 별다른 등록이나 인증과정없는 HTTPS를 사용하기로한다.
사용법은 이렇다.
git clone https://{user}:{password}@github.com/{user}/repository.git {direcotry} git pull https://{user}:{password}@github.com/{user}/repository.git {direcotry}
git clone과정은 현재 버전을 받기 위해서 하는 과정이고, 실제 가장 많이 쓰는 deploy는 git pull이다.
사실 git에 대해 자세히 알고 싶을수도 있는데, 그런 사람들을 위해 쉽고 빠르게 이해할 수 있는 여러 링크를 준비했다.
http://classic.scottr.org/presentations/git-in-5-minutes/?hc_location=ufi
http://blog.outsider.ne.kr/865
http://blog.outsider.ne.kr/866
특히 outsider 님의 글은 이 프로세스를 거의 모두 설명하다시피 하고 있으니 참고하면 좋겠다.
git pull을 하면 다음과 같은 화면을 보게되고, 정상적으로 deploy되게 된다.
# git pull https://{user}:{password}@github.com/{user}/repository.git {direcotry} remote: Counting objects: 7, done. remote: Compressing objects: 100% (1/1), done. remote: Total 7 (delta 6), reused 7 (delta 6), pack-reused 0 Unpacking objects: 100% (7/7), done. From https://github.com/{user}/repository * branch HEAD -> FETCH_HEAD Updating ... Fast-forward *.php | 2 +- *.php | 2 +- *.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)
나처럼 버전관리는 하고 싶은데, 귀찮다면 이렇게 하는 방법도 있다고 소개해본다.