전문 응용 프로그램 개발자는 GIT 및 Subversion과 같은 버전 제어 시스템을 어떻게 사용합니까?


10

나는 초보자 개발자이며 처음부터 GIT 및 Subversion과 같은 전문가 용 도구 (이 도구에 대해 잘 이해하지 못함)가 프로젝트의 요구를 충족시키는 방법을 궁금해하고 있습니다. 그들이 그것을 사용한다면, 어떻게 그런 것을 설정합니까?

내 응용 프로그램이 너무 크지 않고 팀에서 아직 일하고 있지 않습니다. 큰 도움이 되겠습니까?

이 사이트에는 도구 사용 방법에 대한 질문이 있지만 초보자 지원이 필요합니다.


5
힘내와 Subversion은 지침과 함께 제공됩니다; 기본적으로 개발 코드를 구조화 된 방식으로 저장하는 저장소입니다. 개별 개발자는 전체 코드 변경 기록과 강력한 백업 기능을 통해 이점을 얻을 수 있습니다. 프로젝트 팀은 동일한 소스 코드 리포지토리를 공유 할 수있어 워크 스테이션간에 변경 내용을 동기화 할 수 있습니다.
Robert Harvey

답변:


13

소스 컨트롤은 어디에서나 사용할 수 있으며, 사용하지 않으면 전문 개발자라고 부를 수 없다고 말할 수도 있습니다. 혼자 개발하더라도 소스 제어는 여전히 몇 가지 이점을 제공합니다. 결국 그것은 역사와 광범위한 실행 취소 경로를 제공합니다. 또한 새 버전이 마음에 들지 않으면 항상 이전 버전으로 되돌릴 수 있다는 사실을 알고 더 많은 실험을 할 수 있습니다.

즉, Subversion 또는 Git과 같은 소스 제어 시스템 내에서도 워크 플로는 팀마다 크게 다릅니다. 시작하기 가장 좋은 곳은 아마도 소스 제어 시스템을 선택하고 표준 워크 플로우에 익숙해지는 것입니다 (전문적인 삶에서 워크 플로우를 전환해야 할 머리를 유지하십시오).

시작하려면 Git을 추천합니다. 나는 Git 팬이지만 Git gets를 선택하면 서버리스 작업으로 시작할 수 있으며 서버가 적합한 경우에만 서버를 설정할 수 있습니다. 반면 Subversion은 서버가 필요하며 서버를 설정하는 것은 어렵지 않지만 매우 어려운 것은 아니지만 이런 종류의 일에 익숙하지 않을 때는 어려운 일입니다.

다음은 일반적인 소스 제어를위한 몇 가지 유용한 규칙에 대한 개요입니다. http://scottonwriting.net/sowblog/archive/2008/11/13/163320.aspx

혼자서 작업 할 때는 많은 작업 흐름이 필요하지 않습니다. 일찍 커밋하고 자주 커밋하십시오. 버전 출시를 시작하면 릴리스에 태그를 지정하십시오. 실험이나 긴 발산 작업을위한 브랜치를 생성하십시오 (Git은 Subversion보다 저렴하고 간단합니다).


1
한 점을 제외하고 좋은 대답입니다. 서버가 필요한 서브 버전은 가장 큰 단점이기 때문에 서버를 선택하지 않을 것입니다. 저장소는 로컬 디렉토리에있을 수 있으며 setup은 단일 명령보다 큽니다. Git과 Subversion의 주요 차이점은 Git과 같은 분산 시스템이 Subversion과 같은 중앙 집중식 시스템보다 훨씬 유연하다는 것입니다.
Jan Hudec

5

매우 간단한 수준의 소스 제어 시스템 (SVN, Git 등)을 사용하면 파일의 변경 기록을 유지할 수 있습니다. 이를 통해 시간이 지남에 따라 코드가 어떻게 변경되었는지 확인하고 원하지 않는 변경 사항을 롤백 할 수 있습니다 (예 : 변경이 예상대로 작동하지 않고 코드를 이전에 알려진 상태로 되돌릴 수 있음). 이것은 당신이 그것을 사용하기 시작하면 스스로 개발하더라도 당신에게 귀중한 것이 될 것입니다.

팀의 다른 사람과 작업하는 즉시 여러 사람이 동일한 파일을 변경할 수 있고 변경 사항이 충돌하지 않는 경우 (예 : 두 사람이 파일의 다른 섹션을 변경하는 경우) 변경 사항이 병합되므로 혜택이 훨씬 더 커집니다. 자동으로. 충돌이있는 경우 동료 옆의 변경 사항을보고 변경 사항을 병합하는 방법에 대해 논의 할 수 있습니다.

또한 코드 버전을 릴리스 할 때 코드베이스 (일반적으로 태그라고 함)의 스냅 샷을 작성하여 주 소스가 아직 릴리스되지 않았을 수있는 새로운 기능으로 이동하더라도 문제점을 쉽게 디버그 할 수 있습니다.

다음은 유용한 리소스입니다.

Visual Studio 및 .NET을 사용하여 Subversion 및 Tortoise SVN 시작 및 실행

Subversion을 사용한 버전 제어


1
오늘날 모든 사람이 분산 시스템으로 전환 할 때 Subversion을 첫 시스템으로 학습하는 것은 일종의 역효과를 낳기 때문에 +1을주지 않습니다.
Jan Hudec

3

초보자를위한 튜토리얼

매우 기본적인 수준에서 시작하는 데 도움이되는 훌륭한 자습서 (비디오 및 텍스트)가 있습니다. Git은 초보자에게 처음으로 이유를 알려주고 반복, 정의 및 그래픽을 사용하여 주요 명령의 이름과 기능을 기억하는 데 도움이되는 초보자에게 부드러운 주제로 주제소개 하는 데 큰 접근 방법이있는 것 같습니다 .

SVN

SVN은 CVS를 더 잘 수행하도록 의도되었습니다. CVS (Concurrent Version System)는 한 번에 파일 작업을 수행했으며 SVN은 일반적으로 한 번에 디렉토리 또는 디렉터리 트리 작업을 수행했습니다. SVN (및 CVS 또는 기타 시스템)은 직장에서 사용하는 경우 중요 할 수 있지만, 우리는 늦은 모델을 선호하는 것처럼 몇 년마다 소스 제어를 수행하는 데 필요한 것에 대한 이해를 크게 향상 시킨다고 생각합니다. 컴퓨터의 경우 최신 모델 소스 제어 도구를 선호해야합니다. 많은 시스템의 경우 코드를 마이그레이션 할 수있는 변환기와 폐기 된 시스템에서 생성 된 히스토리 및 기타 아티팩트가 있지만 시스템을 변경하는 것은 막대한 투자이며 코드 히스토리가 손실 될 수 있습니다.

전문적인 소스 제어로 전문적인 요구 사항 충족

귀하의 질문 "프로젝트 요구를 충족시키기 위해 GIT 및 Subversion과 같은 전문가 용 도구를 어떻게 사용합니까?" "가능한 한 빨리 일하면서 팀이 서로의 방식으로 협력하지 않고 어떻게 협력 하는가?"라는 질문과 밀접한 관련이 있습니다.

코드는 다른 개발자가 사용할 코드를 만드는 일부 개발자와 다른 수준의 안정성 대 혁신이 필요한 다양한 이해 관계자와 함께 자주 변경됩니다. 소스 제어 시스템은 팀이 사용할 코드를 저장하여 시간에 따라 변경되는 버전 및 종종 변경 그룹을 다른 변경 그룹에서 분리하는 데 사용되는 코드 사본으로 제어되는 브랜치와 함께 컨텍스트의 각 변경 사항을 유지합니다.

여러 팀 구성원의 작업을 병합하여 작업을 다시 가져 오는 것은 SVN 및 이전 시스템에서 중앙 집중화되어 어려운 작업이었습니다. Git을 사용하는 팀의 경우, 몇 명의 전문가 대신 팀 전체의 영향을 받기 위해 병합이 더 단순 해지고 더 쉽게 이루어집니다. SVN에서 브랜칭은 개인적인 문제가 될 수 있지만 병합은 종종 팀에 고통스러운 영향을 미쳤으며 코드를 기본 라인으로 다시 이동하는 것은 권한 부여, 중단 방지 및 작업에 필요한 노력의 수준에서 고통 스러울 수 있습니다. .

확립 된 소스 제어 저장소에서 전문가는 근본 원인의 문제점 진단과 같은 다른 요구를 충족시킬 수 있습니다. 작동하는 데 사용 된 코드 버전이 있고 현재 버전에서 발생하는 문제를 새로 발견 한 경우, 문제가 발생한 시점을 정확하게 찾아 내기 위해 히스토리에서 앞뒤로 이동할 수 있습니다. SVN 에서이 기능은 미숙하지만 Git에서 마지막 작동 / 첫 번째 실패 버전에 대한 검색은 git bisect라는 명령으로 지원됩니다. 이 문제는 두 코드 사이의 소스 변경 중 하나에 의해 발생하며, 이는 전체 코드베이스를 검색하는 것보다 훨씬 쉽게 진단 할 수 있습니다.

유감스럽게도 소스 컨트롤을 사용하는 데 도움이되기를 바랍니다.


0

우리 팀은 자체 개발 한 팀 버전 관리 시스템을 사용합니다. (슬프게도, Git은 아직 IBM i "네이티브"소스 파일에서 작동하지 않는 것 같습니다.) 개인적으로, 해당 시스템에서 소스를 가져온 후에는 프로젝트가 완료 될 때까지 개발 과정에서 Git을 사용합니다. 팀 VCS.

그들이 투표에서 말한 것처럼 ... 일찍 저지르고 자주 저 지르십시오. 새로운 기능을 다룰 때 커밋합니다. 테스트와 디버깅 중에 변경을 할 때마다 컴파일간에 커밋하고 컴파일러 오류를 수정하려고 할 때마다 커밋합니다. 이를 통해 테마에서 여러 변형을 시도하는 것이 더 간단 해지며 필요한 경우, 특히 여러 파일에서 변경 사항이 조정될 때 테마에서 쉽게 취소 할 수 있습니다.

힘내 내가 개발 접근 방식을 개선했다.


'Git은 IBM i "기본"소스 파일에서 아직 작동하지 않는 것 같습니다. "— Git은 모든 파일에서 작동해야합니다. 여기서 무슨 문제가 있습니까?
Marnen Laibow-Koser 2014 년

@ MarnenLaibow-Koser 대부분의 IBM i 개발자는 기본 (레거시) 파일 시스템 QSYS라고하는 소스 파일을 사용하고 있습니다. 여기서 소스 파일은 고정 길이 형식이 내장되어 있습니다. 각 줄은 6 자리 시퀀스 번호, 6 자리 변경 날짜, 소스 코드 텍스트 라인으로 시작합니다. 라인의 소스 코드가 변경되지 않은 경우에도 시퀀스 및 변경 날짜가 변경 될 수 있습니다. 솔루션이 더 최근에 개발되었을 수 있습니다. IBM과 다른 사람들은 이제 IBM i에서 자식을 지원합니다. IBM i의 다른 IFS 파일 시스템에있는 "정상"스트림 파일의 소스에는 문제가되지 않습니다.
WarrenT

오 하나님, 나는 20 년 전에 AS / 400 개발을했던 것을 막연히 기억합니다. 그러나 Git이 그러한 파일과 함께 작동하지 않을 이유는 없습니다. 줄 번호를 할인하는 병합 드라이버를 작성해야하지만 쉽게 수행 할 수 있습니다. (IBM이 그렇게했는지 궁금하다 ...)
Marnen Laibow-Koser

그러나 줄 번호와 줄 변경 날짜를 제거하면 Git에서 무언가를 다시 확인할 때 잃어버린 것입니다. 아마도 30 년 동안 그들에게 의지 한 후에는 더 이상 그 날짜가 필요하지 않다는 사람들을 설득하기가 쉽지 않습니다. 그렇다. Git의 비난이 같은 것을 제공한다는 것을 알고 있지만, 사람들은 반드시 논리적 주장이 아니더라도 오랫동안 의존해 온 것을 포기하는 것을 꺼려한다.
WarrenT

실제로 Git clean / smudge 필터를 만들어 Git Blame에서 날짜를 복원 할 수 있습니다. :)
Marnen Laibow-Koser '17
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.