Search

GIT에 대한 이야기

회사에서 사용하고 있는 svn을 git으로 넘기기 위한 과정을 정리합니다.

알게된 좋은 기능

GIT에 세부적인 메시지 나오는 것을 모두 보기
$env:GIT_TRACE = 1 $env:GIT_TRANSFER_TRACE = 1 $env:GIT_CURL_VERBOSE = 1 git push -u origin main
PowerShell
복사
Azure에서 LFS파일 업로드를 할 때 단일 파일이 100M를 넘어갈 경우 업로드가 되지 않는다
문서에는 2G라고 나와있지만 실제는 그렇지 않음
GitHub에 올릴 때 size-pack (or size)이 2G가 넘어가면 업로드 되지 않는다.
size-pack, size는 git repository의 크기
알아내는 방법
git count-objects -vH
PowerShell
복사
codecommit에 ssh을 이용해서 접속할 때 단순하게 id_rsa.pub를 등록해주는 것 만으로는 사용이 안된다.
IAM에 사용자 → 보안 자격 증명 → AWS CodeCommit에 대한 SSH 퍼블릭 키 에 id_rsa.pub에 있는 내용 등록
.ssh 폴더로 이동
config파일 열기 (혹은 만들기 )
code config
config파일에 아래의 내용을 등록 해 준다.
Host git-codecommit.*.amazonaws.com User <AWS 자격증명 후 나온 SSHID> IdentityFile ~/.ssh/<1번에서 생성한 개인키 pem 파일 이름>
JavaScript
복사
아래 명령어로 접속 되는지 확인한다.
ssh git-codecommit.us-east-2.amazonaws.com
브랜치의 커밋을 여러개를 하나로 합치고 메인에 rebase
# 브랜치 체크아웃 git checkout your-branch-name # 인터랙티브 리베이스 시작 (최근 5개의 커밋을 하나로 합치기) git rebase -i HEAD~5 # (텍스트 편집기에서 첫 번째 커밋을 pick, 나머지를 squash로 변경) # 메인 브랜치 체크아웃 git checkout main # 메인 브랜치 최신 상태로 업데이트 git pull origin main # 브랜치를 메인 브랜치로 rebase git rebase your-branch-name # (충돌 발생 시 충돌 해결 후 git rebase --continue) # 메인 브랜치에 푸시 git push origin main
Shell
복사

회사에서 사용중인 SVN을 GIT으로 바꿔보자 1편

조건

외부 GIT서비스는 사용할 수 없습니다. GITHUB, GITLAB 안됩니다.
내부 솔수션을 사용하며 되도록 Synology NAS에 설치한다.
Synology는 920+

첫번째 시도

synology에 gitlab을 설치
실패 : 뭐 하나 할 수 없을만큼 그냥 느림.
1.
docker로 gitlab 설치
2.
gitlab이 실행되면 메모리와 CPU의 사용량이 너무 높아서 한명만 clone을 받아도 gitlab 관리 페이지에 접속을 못 할 만큼 느려진다.

두번째 시도

synology에 gitea를 설치
실패 : 3명 이상의 유저가 클론만 해도 관리페이지 접속이 안 될 만큼 느려짐.
1.
docker로 gitea설치
2.
속도도 빠르고 모든 것이 깔끔. github과 유사한 관리페이지도 아주 편하게 동작함
3.
모든 준비를 끝내고 실제 다운로드를 시도했으나 세명 이상 clone을 하니 CPU와 메모리를 너무 많이 잡아먹어서 모든 것이 멈춤.

세번째 시도

synology에 설치된 gitea를 성능이 좋은 PC로 이동
실패 : gitea가 메모리를 너무 많이 사용하고 gitea에 4명 이상의 유저가 붙어서 서로 다른 repository를 다운로드 하면 느려짐.
1.
Windows용 gitea설치
a.
gitea를 서비스로 등록해서 자동 실행하는 것도 설정 함.
2.
설정 파일과 레포지토리를 옮긴 후에 windows에 설치한 gitea에도 똑같은 위치를 설정했더니 문제 없이 이동 완료
3.
32G의 PC메모리를 모두 사용
4.
여러 레포지토리 다운로드를 시도하니 속도가 너무 느려서 다운로드 받을 수 없었음
5.
다운로드를 시도하면 gitea서버에서 git for windows가 여러개 실행되는데 이것들 하나 하나가 CPU와 메모리를 잔뜩 장악

네번째 시도

성능이 좋은 PC에 gitlab 설치
실패 : 메모리 32G를 모두 사용. 적당히 느림.
1.
Windows에 docker를 설치하고 gitlab 설치
2.
관리페이지도 잘 동작하고 설정도 무난하게 완료
3.
REDIS도 연결해 보았지만 REDIS에 정상적으로 접속해서 동작하는지는 확인이 안됨
4.
적당히 다운로드가 되긴 했지만 30명이 동시에 시도하면 어떻게 될 지 장담할 수 없음.
5.
client 파일이 갯수도 많고 용량이 큰 것도 많아

다섯번째 시도

LFS설정.
진행중 :
1.
크기가 큰 바이너리가 포함된 확장자는 모두 LFS로 돌린다.
a.
.ddc,.pdb,.exe,.uasset,.mp4
2.
LFS는 같은 서버에 설정하지 않고 별도 서비스를 이용
3.
Synology C2에 LFS 파일을 저장한다.
a.
Synology C2가 싸다
b.
AWS S3 API와 호환됨.
4.
시간이 오래 걸리는 부분이 있음
remote: Total 89258 (delta 0), reused 0 (delta 0), pack-reused 89258 Receiving objects: 100% (89258/89258), 1.21 GiB | 26.47 MiB/s, done. Resolving deltas: 100% (18254/18254), done. warning: git-credential-manager-core was renamed to git-credential-manager warning: see https://aka.ms/gcm/rename for more information Updating files: 100% (80001/80001), done.
PowerShell
복사
여기에서 진짜 오래오래오래 멈춰있네.
5.
오랜 시간이 걸려서 완료는 됐지만 PDB파일이 깨져서 다운로드가 안 됨.

회사에서 사용중인 SVN을 GIT으로 바꿔보자 2편

위에서 셋팅한 gitlab을 1년간 사용했다. gitlab이 설치되어 있던 PC의 자리를 옮겼는데 M.2 SSD가 사망하면서 docker도 함께 사망. docker로 설치해서 사용중이던 gitlab도 함께 사망.