저는 개발자가 라이브 배포 웹 서버에서 스크립트 및 이미지 파일을 직접 사용하여 작업하는 환경에서 작업하고 있습니다. 이것은 무서운 일이며 지금까지는 놀랍게도 소수이지만 몇 가지 문제를 야기했습니다. 이러한 변경에는 소스 제어가 전혀 사용되지 않으며 변경 사항은 라이브 서버에서만 이루어지며 라이브 서버에서만 이루어집니다. 내 변경 사항을 라이브 웹 서버에 배포할 때 다른 개발자가 라이브 웹 서버에서 변경한 내용이 유지/병합되도록 만드는 방법을 모르겠습니다. 이 문제는 소스 제어를 사용하면 상황이 좋아지기보다는 악화되는 것 같습니다.
저는 개인적으로 git 및 svn 서버를 설정했으며 지난 몇 년 동안 많은 데스크톱 앱 및 모바일 앱 프로젝트에서 git 및 svn을 통한 버전 제어를 사용했습니다. 그러나 이것이 나를 어리둥절하게 만들었다.
답변1
모범 사례는 배포 방법의 일부로 git을 사용하는 것입니다. 너무 많아서 git의 다른 용도에 대한 답변은 상대적으로 거의 없습니다.
즉, git은 다양한 방법으로 사용될 수 있습니다. git이 아닌 라이브 서버에 배포하는 경우 git에 변경 사항을 커밋하는 것이 여전히 가치가 있으므로 최소한 언제 변경된 내용을 확인하고 롤백할 수 있습니다. 당신이 잃게 될 것은 합리적인 주석과 변경 사항을 커밋으로 그룹화하여 신속하게 롤백할 위치를 확인하고 서로 다른 파일의 어떤 변경 사항이 서로 종속될 수 있는지 확인할 수 있다는 것입니다.
라이브 코드를 git 작업 디렉터리로 만드는 것이 완벽하게 가능하며 cron에서 자주 실행되는 저장소의 자동 업데이트를 가질 수 있습니다.
etckeeper(https://github.com/joeyh/etckeeper)은 어떤 면에서는 비슷합니다. 이는 웹 사이트와 달리 서버의 /etc 디렉토리에 변경 사항을 기록하도록 설계되었지만 그 외에는 여러분이 염두에 두고 있는 것과 매우 유사합니다. 커밋 후크 등에 몇 가지 유용한 아이디어가 포함되어 있을 수 있지만 여러 다른 VCS 시스템을 다루고 여러 운영 체제와의 호환성으로 인해 복잡하기도 합니다.