소스 제어없이 여러 사람과 함께 응용 프로그램을 개발하는 가장 효과적이고 효율적인 방법은 무엇입니까? 이미 Git, Mercurial 또는 TFS와 같은

내 상황 소개

소규모 웹 개발 회사에서 일합니다. 저를 포함하여 4 명의 ASP.NET 개발자로 구성된 팀이 있습니다. 거의 모든 프로젝트 (> 98 %)는 완료하는 데 약 1-4 주가 소요되는 1 인 프로젝트입니다. 우리는 소스 또는 버전 관리를 사용하지 않습니다. 우리가 가진 유일한 것은 모든 프로젝트의 최신 소스 (== 라이브 응용 프로그램의 소스)를 포함하는 로컬 서버의 공유 폴더입니다.

드문 경우지만 둘 이상의 사람과 동일한 프로젝트에서 작업해야하는 경우에는 … Beyond Compare를 사용합니다. 개발자는 하루에 한두 번 컴파일하는 버전이 있는지 묻고 Beyond Compare를 사용하여 코드를 동기화합니다. 두 사람 만 프로젝트를 진행할 때는 “아주 잘”작동하지만 세 번째 개발자가 프로세스를 시작하자마자 관리 할 수없는 쓰레기가됩니다. 특히 모든 사람들이 데이터베이스를 변경하기 시작할 때.

저 (그리고 동료 개발자 중 한두 명)는 이미 Git, Mercurial 또는 TFS와 같은 소스 및 버전 제어 형식을 사용해야한다고 이미 여러 번 상사에게 말했습니다. 불행히도 상사는 소스 및 버전 제어 시스템으로 전환하는 이점을 보지 못합니다. 그의 눈에는 모든 것이 잘 작동하고 새로운 시스템을 설정하고 모든 사람을 확인하는 데 시간과 돈을 투자하고 싶지 않기 때문입니다. 사용 방법을 알고 있습니다. 그에게 장점 (간단한 협업, 다른 버전의 응용 프로그램, 코드를 변경하는 안전한 방법 등)을 설명한 후에도 그는 여전히 그것이 우리에게 필요한 것이라고 생각하지 않습니다.

4 명의 개발자 중 2 명 (나 포함)만이 소스 제어 (Git)에 대한 경험이 있습니다. 그리고 그 경험은 매우 제한적입니다. 내 컴퓨터에 Github 저장소를 복제하고 변경하고 커밋 한 다음 Github에 다시 푸시하는 방법을 알고 있습니다. 그게 다야.

내 문제에 대한 설명

몇 주 안에 우리는 표준을 위해 다소 큰 프로젝트를 시작할 것입니다. 완료하는 데 2-3 개월의 개발자가 필요할 것입니다. 저는 프로젝트 책임자 (프로젝트 관리자 및 책임 개발자)가되며 모든 것에 대한 책임을집니다. 나는 Beyond Compare 접근 방식에 문제가 있었으며,이 큰 프로젝트를 수행하고 싶지는 않습니다.

우리가 할 수 있을지 의심되기 때문에

  • 자체 Git 서버를 설정하고
  • Git과 함께 일하도록 모든 사람을 가르치고
  • 이 큰 프로젝트에서 Git을 성공적으로 사용하고

여러 사람이 소스 또는 버전 제어를 사용하지 않고 동일한 프로젝트에서 협업 할 수있는 좋은 방법을 알고 있다면 관심이 있습니다.

최신 정보

답변과 의견을 보내 주셔서 감사합니다. 계획은 다음과 같습니다.

  1. 모든 기술 담당자가 소스 제어 구현에 대해 동일한 방식으로 느끼도록 개발자와 회의를 갖습니다. 모든 사람이 배후에있을 때 우리는 더 강력한 지적을 할 것입니다.
  2. 상사에게 아이디어를 제시하고 실제로 소스 제어 가 필요하다고 말하십시오 .
  3. 가능한 빨리 구현하십시오.


답변

버전 관리를 설치하고 프로젝트의 모든 사람들에게 사용하도록 가르치려면 하루가 걸립니다. 그렇게 어렵지 않습니다. 개인적으로 Git을 사용하지는 않았지만 다른 버전 제어 시스템을 설정하고 사용했으며 작동하기가 어렵지 않습니다. 개발 환경과 통합되는 것을 선택하십시오. 이렇게하면 거의 매끄럽게 사용할 수 있습니다.

이것은 시간 낭비가 아닙니다.

시간은 당신 것입니다 누군가 덮어 쓰기 또는 삭제가 일부 코드가 훨씬 더 많은 비용을 것입니다 때 잃게됩니다.

버전 관리 기능이 없다면 프로젝트를 백업하고 모든 사람이 가지고있는 버전과 서버에있는 버전 등에 대해 걱정하는 데 상당한 시간이 소요됩니다.

상사에게 확신을 줄 필요가 있다면 비 버전 제어 솔루션을 설정하고 모니터링하는 데 걸리는 시간을 추정하고 며칠 손실 된 작업을 다시 작성하는 비용을 추가하십시오. 동일한 소스 파일로 작업하는 3 명의 개발자가 편집 한 내용을 수동으로 병합하는 비용과 병합이 잘못되는 데 따른 추가 비용을 추가하는 것을 잊지 마십시오. 훌륭한 버전 관리 기능으로 무료 제공

그런 다음 버전 제어를 얻는 비용-nil (오픈 소스로 갈 경우)과 3 일-설정 비용.

프로젝트의 후반부에 오류가 발생하면 조기에 하나 이상의 비용이 발생한다는 것을 잊지 마십시오. 실수로 인해 전체 프로젝트를 다시 실행해야 할 경우 재 작성 시간보다 훨씬 많은 비용이 소요될 수 있습니다.


답변

폴더에서 소스를 공유하면 해당 저장소도 공유 할 수 있습니다. 보스는 .git 폴더가 있다는 것을 제외하고는 그것에 대해 알지 못합니다.

Seth Godin-당신은 당신의 일을 올바르게하기 위해 허락을 요구할 필요가 없습니다.


답변

소스 제어를 설정하고 사용법을 배우고 상사에게 알리지 마십시오. 나는 일반적으로 불순종 한 경영진을 옹호하지는 않지만이 경우에는 상사가 바보입니다. git이 배우는데 너무 오래 걸릴 것이라고 생각한다면 svn과 같은보다 단순화 된 버전 제어 시스템으로 시작하십시오 .git 이하는 멋진 일을 모두 수행하지는 않지만 기본적인 이해를 얻는 것이 더 쉽습니다.

무언가를 구현하기 전에 그 중간에 올 때까지 기다리지 말고 심각하게 곤경에 처하십시오. 그냥하고 일을 끝내십시오.

추가 편집 : 귀하의 질문에 실제로 묻는 것은 ‘소스 제어 시스템을 사용하지 않고 소스 제어를 어떻게합니까?’입니다. 당신은 그 필요성을 알고 있으며, 여기있는 모든 사람들이 당신에게 똑같은 것을 말하고 있다고 생각합니다. 소스 제어 시스템없이 소스 제어를 할 수있는 방법은 없습니다.


답변

나는 당신의 요약 만 살펴볼 것이지만, 그것은 당신의 상사가 시간과 돈을 주장하고 있고, 당신은 기술적 우월성을 주장하는 것처럼 보입니다. 당신은 시간과 돈을 주장해야합니다. 일을하는 git 방법을 배우고 저장할 수있는 시간 동안 추적 한 다음 “3/28/2011과 Joe가 컴파일 가능한 빌드로 돌아 오기 위해 30 분을 기다려야했다. 마지막 커밋에 대한 git merge 명령은 약 5 초가되었을 것입니다. “

서버 교육 및 설정이 비즈니스로드 블록 인 경우 실제로 서버를 공유하는 폴더가있는 git을 사용하는 팀 구성원 한 명만 포함하여 git 워크 플로를 설정하는 방법에는 무한한 방법이 있습니다.

공유하기에 적절한 시점에 동료에게 코드를 지정된 공유 폴더에 복사하도록 지시하십시오. 각각의 저장소를 유지하고 모든 소스 제어 작업을 직접 수행 할 수 있으며 자신을 훈련시킬만큼 자신감을 가지면서 점점 더 많은 소스 제어 책임을 전달할 수 있습니다. 그것은 이상적인 방법과는 거리가 멀지 만 현재의 것과 비교하면 병합 시간을 절약 할 수 있습니다. 적은 팀 학습 곡선으로 상사를 설득하는 것이 더 쉬우 며 원하는 모든 롤백 및 버전 관리 이점을 얻을 수 있습니다.

나는 데이터베이스 작업을 많이하지 않지만 데이터베이스 스키마 변경에 대한 병합은 소스 제어로 잘 처리되지 않습니다. 이러한 병합이 어려운 경우 모든 데이터베이스 변경이 단일 게이트 키퍼를 통과하는 프로세스 변경을 고려할 수 있습니다.


답변

이건 미친 짓이야 직접 작업하더라도 VCS를 사용해야합니다. 회사에서 VCS를 사용하지 않는 것은 금지되어야합니다. 그냥 해. 지금! 정말 … 처음부터 고급 기능이 필요하지 않습니다. GitHub와 GitLab은 사용하기 매우 간단하지만, Windows에서 Git을 설정하고 사용하는 것이 어렵지는 않지만 상사가 주장하는 경우 더 많은 Windows 호환 호스팅 서비스를 찾을 수 있다고 확신합니다.


답변

당신이 묻는 생각은 불가능 합니다. 여러 사람이 어떤 소스 컨트롤을 사용하지 않고 동일한 프로젝트에서 작업하는 경우, 당신은 신속하게 문제를 많이해야합니다, 당신이 리드 개발자가되기 때문에, 당신은 그들과 거래를해야합니다.

개인적인 경험을 통해 두 명의 개발자는 소스 제어없이 프로젝트를 수행 할 수 없습니다 . 셋이 아닙니다. 넷이 아닙니다. 두. 예외적 인 상황 에서 두 명의 개발자와 상황을 관리 할 수있을 것입니다 . 개발자가 매우 체계적이고 전문적인 경우, 상호 작용이 잘되고 쉽게 교환 할 수있는 경우 (매일 같은 시간에 같은 방에 위치 할 때마다) 다른 사용자가 동시에 수정 한 파일을 실수로 수정 ​​한 후이 사람이 변경 한 내용을 지우는 등의 실수를 피할 수있는 경우).

필자의 경우 두 사람이 버전 관리없이 프로젝트에 참여하게하는 것은 언제나 재난 이었다. 가장 좋은 경우, 한 사람이 변경된 파일을 두 번째 사람에게 보내고,이 두 번째 사람은 diff 도구를 사용하여 변경 사항을 수동으로 적용했습니다. 최악의 경우 한 사람이 자신이 수행 한 변경 사항을 추적 한 다음 두 번째 사람이 소스 코드를 수정할 때마다 다시 적용했습니다. 결과 : 시간, 비용 및 생산성이 크게 손실됩니다.

이제 내 관점과 내 경험에 비추어 볼 때이 문제에 대한 세 가지 해결책이 있습니다.

  • 사용하기 쉬운 버전 관리를 설치하십시오 . CollabNetSubversion을 SVN 서버로 설치했지만 보안에 전혀 신경 쓰지 않으면 매우 빠르고 쉽게 설정할 수 있습니다 . Visual Studio를 사용하는 경우 개발자가 Visual Studio 내에서 소스 코드를 쉽게 업데이트 / 커밋 할 수 있도록 AnkhSvn을 설치할 수 있습니다.

  • 상사 에게 Joel 테스트는 자신의 직업을 잘 아는 사람이 작성했으며 Joel 테스트에서 버전 제어 기능이 있다고 제안하면 그 뒤에 이유가 있습니다. 결국 개발자는 코드를 작성하기 위해 IDE / 구문 강조 도구가 필요하지 않다고 결정할 수도 있습니다. Windows 메모장은 괜찮습니다. 또한 왜 인터넷에 접속할 수 있습니까? Windows 3.1을 실행하는 매우 오래된 PC 만 있으면됩니다.

  • 버전 관리를 제외한 모든 것이 완벽하고 전문적이라는 의심이 있기 때문에이 회사를 종료하십시오 .


답변

큰 프로젝트에서 VCS를 사용하지 않는 것은 하나의 설정 시간을 투자하고 싶지 않기 때문에 맨발로 긴 여행을하는 것과 같습니다. 신발을 신는 시간을 투자하고 싶지 않기 때문입니다.

모든 VCS는 전혀없는 것보다 훨씬 좋습니다.

VCS를 설정하는 쉬운 방법은 TortoiseSVN 을 얻는 것입니다 (C #을 사용하는 것처럼 보이기 때문에 Windows를 사용한다고 가정합니다). 선택한 로컬 폴더에 저장소를 작성하십시오 (이로 이동하여> TortoiseSVN> 여기에 저장소 작성을 클릭하십시오). 네트워크 에서이 폴더를 공유하고 (항상 사용할 수있는 컴퓨터에 있어야 함) url로 체크 아웃하십시오 file://computername/path/to/that/repository. 다운로드가 제외되었습니다. 설정하는 데 1 분 이상 걸리지 않습니다.