개발자중에 git을 사용하지 않는 사람은 없다고 봐도 무방하다.
git 은 버전 관리 프로그램 중 하나였고 시간이 지나서 git은 하나의 거대한 형상관리 프로그램, 개념으로 자리잡고 있다.
그만큼 개발을 하는 사람들에게는 중요한 존재가 되어버렸다. 이와 관련해서 하나하나 빠르고 쉽게 설명하려 한다.
먼저 형상관리가 왜 필요한지 설명하고 어떤 제품이 있는지 소개하겠다.
그 다음 형상 관리 용어를 이해하기에 앞서 도대체 어떤 상황과 환경에 노출되어 있는지 설명하려 한다.
마지막으로 그 과정에서 나오는 용어를 정리해보려 한다.
물론 제품별로 용어가 조금 다른 것도 있다. 이도 정리해보자.
버전 관리 목적이 가장 크다. 프로젝트가 길어지고, 커질수록, 의사결정 과정이 복잡해지거나 길어져야할 이유가 많아질 수록 버전은 다양해진다.
이런 버전을 관리하기 위해서 형상관리가 필요하다. 그 과정에서 팀 협업이 중요해지고 백업과 리커버리가 중요해진다.
차이가 있다면 병합해야하는 경우도 발생하고 브렌치를 새롭게 따서 변형 형태로 관리가 필요할 수도 있다.
팀 개발¶
여러 명의 개발자가 한 프로젝트에 참여하는 경우, 각자의 코드를 통합하고 변경 사항을 추적하는 것이 중요하다.
형상관리 도구를 사용하면 여러 명의 개발자가 동시에 작업할 수 있고, 코드의 충돌을 방지하며 효과적으로 협업할 수 있다.
대규모 프로젝트¶
대규모 프로젝트에서는 다양한 모듈 및 컴포넌트가 함께 개발되어야 한다.
형상관리를 통해 각 모듈의 버전을 효과적으로 관리하고, 특정 시점의 프로젝트 상태를 기록하여 복구할 수 있다.
또 운영과 대규모 개발 프로젝트가 같이 진행이 되는 경우다. 이런 경우 당연히 형상 관리가 엄격히 이뤄져야 할 것이다.
자동화된 빌드 및 배포¶
지속적인 통합과 배포를 수행하는 환경에서는 형상관리가 필수다.
코드의 변경에 따라 자동으로 빌드 및 배포 프로세스를 관리하기 위해 형상관리 도구를 사용할 수 있다.
자동화된 빌드 배포는 요즘 운영 팀에게 필수적인 요소다. 이 과정에서 형상 관리 도구의 올바른 사용은 매우 중요하다.
다양한 플랫폼 및 환경¶
여러 플랫폼에서 소프트웨어를 개발하는 경우, 코드베이스를 효과적으로 관리하는 것이 중요하다.
형상관리는 다양한 플랫폼 및 환경에서 작업하기 위한 일관된 방식을 제공한다.
애플리케이션의 지속적인 개선¶
소프트웨어가 지속적으로 개선되고 업데이트되어야 하는 경우, 형상관리는 새로운 기능이나 버그 수정과 같은 변경 사항을 효과적으로 관리하여 안정적으로 애플리케이션을 업데이트할 수 있게 해준다.
테스트 및 디버깅¶
코드 변경에 따른 버그를 찾아내고 테스트하는 과정에서 형상관리는 이전 버전과의 차이를 확인하고 문제를 신속하게 해결할 수 있는 기능을 제공한다.
Repository (저장소):
Git에서 코드와 변경 이력 등을 저장하는 공간을 의미합니다. 저장소는 로컬 저장소와 원격 저장소로 나뉩니다.
Commit (커밋):
변경 사항을 저장소에 기록하는 행위를 의미합니다. 커밋은 변경된 파일들과 함께 커밋 메시지를 포함합니다.
Push (푸시):
로컬 저장소에서 변경된 내용을 원격 저장소로 업로드하는 것을 의미합니다.
Pull (풀):
원격 저장소에서 변경된 내용을 로컬 저장소로 가져오는 것을 의미합니다.
Remote (원격):
로컬 저장소와 연결된 원격 저장소를 가리킵니다. 주로 GitHub, GitLab, Bitbucket과 같은 원격 저장소 호스팅 서비스를 의미합니다.
Stash (스태시):
아직 완료되지 않은 작업을 임시로 저장하고 나중에 다시 적용할 수 있도록 하는 기능을 의미합니다.
Branch (브랜치):
코드를 분리하여 독립적으로 개발할 수 있는 가상의 작업 공간을 의미합니다. 새로운 기능 개발이나 버그 수정을 위해 브랜치를 생성할 수 있습니다.
Merge (병합):
서로 다른 브랜치에서 개발한 내용을 하나로 합치는 과정을 의미합니다. 주로 새로운 기능이나 수정이 완료된 후에 기존 코드와 통합할 때 사용됩니다.
Pull Request (풀 리퀘스트):
코드 변경을 다른 브랜치나 저장소에 적용하기 위해 제안하는 요청을 말합니다. 주로 협업 환경에서 사용되며 코드 리뷰와 토론이 가능합니다.
Fork (포크):
원격 저장소의 내용을 자신의 계정으로 복사하는 것을 의미합니다. 주로 다른 프로젝트에 기여하기 위해 사용됩니다.
Clone (복제):
ㄷ원격 저장소를 로컬 환경으로 복사하는 것을 말합니다. 로컬에서 작업을 진행할 때 사용됩니다.
다음은 SVN에서만 사용하는 용어다.
Checkout (체크아웃):
저장소에서 프로젝트를 로컬 환경으로 복사하는 것을 의미합니다. 이로써 로컬에서 작업을 진행할 수 있게 됩니다.
Update (업데이트):
다른 개발자가 저장소에 새로운 변경 사항을 반영하면, 이 변경 사항을 로컬 작업 디렉토리에 적용하는 과정을 의미합니다.
Tag (태그):
특정 시점의 프로젝트 상태를 고정하여 저장하는 것을 의미합니다. 보통 프로젝트의 릴리즈 버전을 태그로 지정합니다.
Revert (되돌리기):
특정 리비전이나 변경 사항을 취소하고 이전 상태로 되돌리는 것을 의미합니다.
Lock (잠금):
파일이나 디렉토리를 다른 사용자로부터 잠그는 것으로, 특정 파일을 특정 사용자만 수정할 수 있도록 하는 기능입니다.
Export (내보내기):
저장소에서 프로젝트를 로컬 환경으로 가져오지 않고 단순히 파일들을 특정 위치로 내보내는 과정을 의미합니다.
다음은 TFS에서만 사용하는 형상관리 용어이다.
Team Project (팀 프로젝트):
TFS에서는 프로젝트를 Team Project라고 부릅니다. 각 팀 프로젝트는 개별적인 코드베이스와 작업 항목을 관리합니다.
Changeset (변경 세트):
TFS에서 코드 변경 내용을 저장하는 데 사용되는 단위입니다. 하나의 변경 세트에는 여러 파일에 대한 변경이 포함될 수 있습니다.
Shelveset (셸브셋):
로컬 작업 디렉토리에서 아직 커밋하지 않은 변경 사항을 서버에 임시로 저장하는 것입니다. 다른 사람과 협업하기 전에 변경 사항을 다른 곳에 저장할 때 유용합니다.
Build Definition (빌드 정의):
소스 코드를 컴파일하고 테스트하여 배포 가능한 결과물을 생성하는 프로세스를 정의하는 것입니다. 팀이 협업하면서 계속적인 통합을 도입할 때 사용됩니다.
Work Item (작업 항목):
개발자 또는 팀이 수행해야 할 작업을 추적하는 데 사용되는 개념입니다. 이슈, 기능 개발, 버그 수정 등을 포함합니다.
Check-in (체크인):
변경된 코드를 로컬에서 서버로 업로드하여 저장소에 반영하는 행위를 의미합니다.
Release Management (릴리스 관리):
애플리케이션의 배포를 자동화하고 특정 환경으로 이동하는 프로세스를 관리하는 기능입니다.
Test Case (테스트 케이스):
소프트웨어 테스트를 수행하기 위한 입력, 실행 조건, 예상 결과 등을 정의하는 테스트의 단위입니다.
Mercurial은 사용해본적은 없다.
들었던건 Mercurial은 Python 언어로 개발되었으며, Python 커뮤니티에서 진행되는 오픈 소스 프로젝트에서 사용했다고 알고 있다.
현재는 상대적으로 위의 도구들을 사용하는 것으로 알고 있으니 본문에서 생략하겠다.
'정리 > 개발환경' 카테고리의 다른 글
[python] jupyter notebook활용해서 티스토리 블로그 작성하기 (0) | 2023.11.23 |
---|---|
[HW] Dex 모니터 연결 안되는 경우 (0) | 2023.11.22 |
[python] VSCODE jupyter HTML 변환 중 멈춤 해결 방법 (0) | 2023.11.21 |