질문을 삭제하지 말아주세요.!
 
1
0
-1

저는 가상머신에 우분투 서버를 설치해서 php를 사용합니다.


그리고 코드를 작성할 때는 윈도우에서 phpstorm을 사용합니다.



phpstorm에서 remote Host에 가상머신 우분투 서버의 정보를 입력하고나서,

코드를 작성한 후 저장을 하면, 자동으로 서버에 수정한 코드만 업로드 시킵니다.


그리고 바로 브라우저에서 그 결과를 확인할 수 있죠.


그런데 어느 누군가가 git hook이  sftp remote의 대안이 된다고 하더군요.


물론 저는 평소에 버전관리로 git은 자주 사용합니다만...

이게... 이런식으로 사용되는건지는 상상이 안되더라구요.


라라벨 프로젝트를 하나를 만든다고 치면..


1.

서버에서 git init --bare "프로젝트 이름"을 하여

빈 저장소를 만들고,


2.

라라벨 프로젝트에 git init을 한 다음에

git remote add origin ssh://git@192.168.0.250:/~/test 명령어로

remote 주소를 복사한 다음


3.

git add .

git commit -m 'this is test'

명령어를 통해 커밋 시키고,


4.

git push origin master를 명령어를 통해

저장소로 push합니다.


5.

그리고 IDE를 쓸 로컬로 돌아와서

프로젝트 디렉토리로 간 다음에

git clone ssh://git@192.168.0.250:/~/test ./ 명령어를 통해서

서버와 코드 동기화를 시키고,

ide로 그 디렉토리를 열어서 프로젝트 디렉토리로 만들고,


ide에서 파일의 내용을 변경합니다.


그리고 저장을 한 다음에


6.

다시

git add .

git commit -m 'this is test'

명령어를 통해 커밋 시키고,

git push 명령어를 통해 로컬에서 서버로
변경된 내용을 푸쉬 시킵니다.
7.
다시 서버로 돌아와서
라라벨 프로젝트의 디렉토리로 가서
git pull origin master
명령어를 통해서 로컬에서 변경된 사항을
땡겨옵니다.
8.
그리고 드디어 로컬에서 브라우저에서
변경된 사항이 화면에 잘 나타나는지를 확인할 수 있게 됩니다.

이게 제가 알고있는 깃 리모트와 로컬의 파일 동기화 방법입니다.


그런데 git hook을 사용하면

로컬에서 코드를 수정하면, 그것을 감지해서 서버로 올리거나.

아니면 그 반에로 서버에서 변경 사항이 있으면 그게 로컬에 적용된다거나...

이런다는건데...

상상이 안되요.


제가 원하는건.

로컬에서 서버로 바로바로 디버깅 해볼 수 있는 환경인데 말이죠.


여튼 다시 본론으로 돌아가서..

git hook이 sftp 리모트 파일 업로드해서

실시간으로 코드 변환을 확인하기를

대안할 수 있는  좋은 방법인가요?


만약에 맞다면 그에 대해 알려주시면 정말 고맙겠습니다.

자세히 나와있는 링크또한 환영하구요.

    CommentAdd your comment...

    2 answers

    1.  
      2
      1
      0

      git hook 이라는건, git에서 벌어지는 특정이벤트를 감지해서 그 곳에 어떤 액션을 만드는건데요,


      간단하게 정리하면 다음과 같습니다.


      git push 라는 이벤트에 hook을 걸어둡니다.

      push라는 이벤트가 벌어지면, 운영중인 서버로 "새로운 소스가 올라왔다!!!" 라는 이벤트를 전송하는거죠.

      그러면 운영중인 서버에서 git pull 명령어를 통해서 바뀐 소스를 가져옵니다.


      그렇게 하면 별도로 remote에 붙어서 작업할 필요자체가 없어지겠죠. (smile)


      1. 익명

        답변 고맙습니다.

        그런데 push를 하기 위해서는 매번

        커밋을 해야하잖아요?

        커밋을 한다는건 git에 log가 쌓인다는건데

        그렇게 하면 지저분해지지 않나요?


        그리고 remote에서는 저장과 동시에 서버로 파일을 올리는데

        git은 파일을 저장하고 그럴때 마다 매번 커밋을 따로 해주고

        푸쉬까지 해줘야하지 않나요?


        하지만 분명히 이를 해결할 수 있는 방법이 있기 때문에

        sftp를 대채하는 대안으로 써도 된다고 한것 같은데

        어떻게 해결할 수 있는지 궁금합니다.


      2. 안정수

        git 으로 commit 은 소스 코드의 수정내역을 관리하기 위해서 당연히 해야 하는 과정입니다.

        서버에 push 하면 push 받은 서버 (remote server)의 저장소 (실제 파일이 위치한 곳이 아니라, git repo가 연결된 .. init bare 한곳) 에 해당 내역이 수신됩니다. 


        이때 hook 을 통해서 (remote 서버 입장에서는 post-receive hook 입니다. )  대상 소스 디렉토리에 새로운 버전의 소스코드로 갱신할 수 있겠죠. 


        이렇게 하는데는 간단하게 생각해도 3가지 장점이 있는데요


        1. 서버에 소스코드 관리 저장소인 git repo 가 있으니. 원할 때 바로바로 과거의 commit log 로 바로 롤백이 가능하다. 
        2. 혹시나 발생할수 있는 sftp 전송의 누락이 발생하지 않는다. (git 은 push 완료된 이후에 hook이 동작할 것이므로..)
        3. 여러명이 동시에 작업해도 git commit log 를 따를테니 merge 가 용이하다. 


        만약 실제 서버에 sftp 로 소스를 관리하신다면 이는 git 에 비해서 상당히 비효율적으로 운영하시는겁니다. 


      CommentAdd your comment...
    2.  
      1
      0
      -1

      가상머신에 우분투를 사용중이시면 가상머신과 호스트 머신 간에 디렉터리를 공유하시면 편합니다. 

        CommentAdd your comment...