깃허브 같은 깃서버?
나는 Git을 시도할 Subversion 사용자입니다.저는 그것에 대해 조금 읽고 분산된 성격을 이해했습니다. 저는 많은 이점을 볼 수 있습니다.
하지만 Git를 사용하여 로컬 분기 및 공유를 수행하면서 백업, 레코드 시스템 등의 역할을 수행할 수 있는 중앙 서버에 대한 아이디어는 마음에 듭니다.저는 오픈 소스 프로젝트를 하지 않기 때문에 Github을 사용할 수 없습니다. 그래서 제 질문은 로컬 Git 서버를 실행하는 최선의 방법은 무엇인가요?
저는 이것이 표준 Git 사용 패턴에 어긋날 수 있다는 것을 알고 있지만, 제 프로젝트에 유용할 것입니다.하지만 제가 간과했을 수도 있는 우려는 언제든지 환영합니다.
감사합니다!
SSH 서버를 설정하고 중앙 저장소를 실행하기만 하면 됩니다.그런 다음 모든 개발자는 커밋이 완료되면 서버에 푸시하는 것에 동의합니다(정책상).이것이 제 직장에서의 사용 패턴입니다.매우 CVS와 SVN과 유사합니다.
- 둘 .
/var/gitroot
예를 들어). - repo를 합니다.
mkdir project.git && cd project.git && git init --bare --shared=group
). - 클라이언트에서 합니다.
git clone ssh://yourserver.com/var/gitroot/project.git && cd project
) - 몇 개 합니다.
git add README
) - 범하다, 범하다, 범하다, 범하다, 범하다, 범함
git commit -m "Initial import"
), git push origin master
)
이것은 당신을 위해 준비가 될 것입니다.
Goditive는 Github과 마찬가지로 자신의 서버에서 실행할 수 있는 Git을 위한 오픈 소스 웹 인터페이스입니다.
업데이트:
http://gitlab.org/ 도 이제 또 다른 대안입니다.
업데이트 2:
GitLab 사용해 보기
내가 사용해 본 최고의 git GUI 도구.그것은 깃허브와 매우 유사합니다.
오픈 소스(MIT License)이며 25.000개 이상의 설치가 있는 가장 많이 설치된 git 관리 소프트웨어입니다.월간 릴리즈와 375명 이상의 기여자를 보유한 활발한 커뮤니티를 보유하고 있습니다.자신의 서버에 무제한 개인, 내부 및 공용 리포지토리를 둘 수 있습니다.대부분의 유닉스 플랫폼에서 실행되는 루비 온 레일즈 앱입니다.
명령줄을 사용하여 작업을 중단하거나 더럽히는 것이 문제가 되지 않는다면, 다른 리포지토리에 대해 서로 다른 액세스 권한을 설정해야 하는 회사 환경에서 작업할 때 gitolite는 절대적인 이점입니다.이것은 @Chris가 언급한 일종의 새로운 버전의 기토시스입니다.
다음은 저자의 웹 사이트에서 요약한 내용입니다.
Gitolite를 사용하면 서버에서 단일 사용자를 사용하여 많은 Git 저장소를 호스팅하고 서버에 대한 실제 사용자 ID나 셸 액세스 권한을 제공하지 않고도 많은 개발자에게 액세스 권한을 제공할 수 있습니다.이를 수행하는 데 필수적인 마법은 ssh의 pubkey 액세스와 authorized_keys 파일이며, 영감은 gitosis라는 오래된 프로그램이었습니다.
Gitolite는 저장소에서 읽기(클론/ 가져오기) 또는 쓰기(푸시)할 수 있는 사용자를 제한할 수 있습니다.또한 회사 환경에서 매우 중요한 분기 또는 태그로 푸시할 수 있는 사용자를 제한할 수 있습니다.Gitolite는 루트 권한 없이 설치할 수 있으며 Git 자체 및 Perl 이외의 추가 소프트웨어 없이 설치할 수 있습니다.
매우 포괄적인 기능 세트를 갖추고 있지만, 제가 매우 좋아하는 한 가지는 일상적인 구성 편집이 특별한 Git 저장소를 통해 수행된다는 것입니다.즉, 사용자를 추가하는 것은
- 구성 파일에 사용자 추가
- 사용자의 SSH 키 추가
- 변경 커밋
- 그것을 gitolite에 밀어넣습니다.
- Voila, 구성이 활성화되었습니다!
그리고 브라우저를 통해 코드를 봐야 할 때, gitolite는 gitweb과 "동기화" 구성을 지원합니다.또는 C로 작성된 깃을 위한 매우 좋은 웹 프론트엔드인 cgit을 좋아한다면, 이 사용법을 살펴봐야 합니다.
소규모 작업 그룹을 위한 오픈 소스 통합형 순수 Java Git 서버, 뷰어 및 리포지토리 관리자인 Gitblit을 고려할 수 있습니다.
베어본스 브라우저
git instaweb --httpd=webrick
git scm book에서
분산 개발을 위해 여기에 설명된 접근 방식과 같은 것과 결합합니다(잘 설명된 개념에 대한 datagrok의 크레딧).
로컬 리포지토리에서 일회성 서버를 시작합니다.
나는 이미 이것을 트위터에 올렸지만, 나는 그것이 약간의 확장을 필요로 할 것이라고 생각했습니다.
분산된 git 워크플로우를 사용하도록 설정합니다. git 구성 별칭.serve "serve --sessose --export-all --base-path=.git --sysaddr --sessage-interval .git/"
변경사항을 끌어다 놓고 밀어넣는 핵심 "공식" 리포지토리로 작업하는 Git 워크플로우를 사용한다고 가정합니다.Github과 같은 git 호스팅 서비스의 많은 사용자들이 그러하듯이, 많은 회사들이 이것을 한다고 확신합니다.
서버나 Github이 잠시 다운되었다고 칩시다.
걱정할 필요 없이, 당신이 git를 사용하는 이유 중 하나는 당신의 로컬 클론에 전체 프로젝트 기록의 복사본을 가지고 있기 때문입니다.
운영 팀이 서버를 다시 활성화하기를 기다리는 동안 코드화 및 커밋 작업을 계속할 수 있습니다.자신에게 메모: 운영 팀을 위해 도넛을 구입합니다.
하지만 이 다운타임 동안 기트 전문가가 아닐 수도 있는 다른 사람과 같은 저장소에서 협업하고 싶다면 어떻게 해야 할까요?
또는 다운타임 대신에 귀사와 귀사의 공동 작업자가 현장에 있는데 어떤 이유로 VPN을 통해 공식 보고서에 연결할 수 없다면 어떻게 하시겠습니까?
또는 사용자와 공동작업자가 여러 가지 실험적 변경사항을 제시하고 액세스 권한이 있더라도 완료되지 않은 문제를 공식 중앙 저장소로 밀어넣고 싶지 않다면 어떻게 하시겠습니까? (기능 분기가 아니더라도)어쩌면 당신은 재앙적인 리베이스나 합병을 정리하는 중이고 나뭇가지들이 사방에 널려 있을 수도 있습니다.
아시다시피 git은 "분산형" 버전 제어 시스템입니다.
워크플로우에서 중앙 "공식" Git 저장소를 사용할 수도 있지만, 사용자와 공동작업자가 서로 커밋을 작성하고 공유하기만 하면 되는 피어 투 피어 방식으로 Git를 사용할 수 있으며 중앙 서버는 이를 알 필요가 없습니다.
그렇다면, 어떻게 여러분의 지점들을 그들에게 넘겨줄 것인가, 아니면 그 반대인가요?
- 패치를 이메일로 보내는 데 깃의 기능을 사용할 수 있습니다.그러나 이는 다소 우아하지 않으며 이메일 패치를 적용하는 방법에 대한 지식이 필요합니다.
- 공동작업자가 SSH에 들어갈 계정을 사용자 자신의 컴퓨터에 만들 수 있습니다.그러나 로컬 루트 액세스 권한이 없거나 SSH 액세스 권한이 없는 경우도 있습니다.
- 보고서를 썸 드라이브에 복제하여 앞뒤로 전달할 수 있습니다.그러나 특히 같은 로컬 네트워크에 속해 있어 썸 드라이브가 필요한 경우에는 다소 지루합니다.
여러분은 아마도 다른 방법들도 생각해 볼 수 있을 것입니다.하지만 아주 쉬운 방법이 있습니다. 네트워크에서 서로를 볼 수 있는 경우 변경사항을 복제, 가져오기 및 풀링하는 데 사용할 수 있는 일회성 서버를 시작하여 변경사항을 완료한 후 삭제할 수 있습니다.
하게 하는 는 이를가하도구입니다.git daemon
다양한 옵션과 기능을 제공하지만, 이 간편한 일회성 작업을 지원하기 위해 사용할 수 있는 방법은 별칭을 만드는 것입니다.나는 그것을 부르는 것을 좋아합니다.git serve
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
Git 별칭은 작업 트리의 기본 디렉터리에서 실행되므로 별칭을 사용하는 것이 실제로 중요합니다.따라서 '.git' 경로는 사용자가 리포지토리의 디렉터리 트리 내 어디에 있든 항상 올바른 위치를 가리킵니다.
새항사를 합니다.git serve
예:
- 려달을 합니다.
git serve
준비가 ."라고보고될 럼블할 준비가 되었습니다."라고 보고할 것입니다.Git은 나쁜 놈입니다. - 당신의 IP 주소를 알아보세요.192.168.1.123이라고 칩시다.
- "이봐 제인, 나는 이 커밋들을 출처로 올릴 준비가 안 됐어/할 수 없지만, 당신은 실행함으로써 내 커밋들을 당신의 클론으로 가져올 수 있어요.
git fetch git://192.168.1.123/
" - 해당 리포를 더 이상 제공하지 않으려면 +를 누릅니다.c
당신은 또한 제인에게 말할 수 있습니다.git clone git://192.168.1.123/ local-repo-name
그녀가 아직 저장소 복제본을 가지고 있지 않은 경우.또는 사용git pull git://192.168.1.123/ branchname
한 번에 가져오기 및 병합을 수행할 수 있습니다. 피쳐 분기에서 함께 작업하는 경우 유용합니다.
그러나 저장소에 암호를 보관하는 경우에는 인증이 없으므로 적대적 네트워크에서 이 작업을 수행하면 안 됩니다.포트 스캐너가 있으면 누구나 해당 포트 스캐너를 찾아 연결하고 레포를 복제할 수 있습니다.
그러나 기본적으로 읽기 전용이므로 매우 위험하지 않습니다.읽어기를 .git daemon
쓰기 액세스를 활성화하려는 경우 man page를 주의하여 설정합니다.공동작업자의 커밋을 가져오려는 경우 읽기 전용으로 두는 것이 훨씬 안전하며, 공동작업자에게 이 명령도 실행하도록 요청하여 사용자가 이 커밋에서 끌어낼 수 있습니다.
관련: 일회성 로 HTTP를 일시적으로 : HTTP: 를접적는: 선 려 공 정 다 관 설 니 합 명 대 일 서 해 으 로 에 버 성 적 시 일 회 경 적python -m SimpleHTTPServer
만약 당신이 GitBlit을 시도해야 하는 것보다 좋고 쉬운 GIT 서버가 필요하다면.또한 저는 Gitolite를 사용하지만 GitBlit를 사용하면 서버, 관리자, 저장소 관리자 모두를 하나로 통합할 수 있습니다.URL: http://gitblit.com/
https://rhodecode.com 은 Git & Mercurial용 오픈 소스 웹 앱으로, 어떤 운영 체제에서도 매우 쉽게 설치할 수 있습니다(설치 프로그램 포함).
로드코드(새로운 버전은 로드코드 엔터프라이즈라고 함)는 코드 검토와 같은 누락된 Git 기능을 추가하며 일반적으로 매우 빠르고 신뢰할 수 있습니다.
당신은 또한 Indfero를 설치할 수 있습니다. 이것은 Google Code의 GPL 클론입니다. 그것은 Subversion과 Git을 모두 지원하기 때문에, 당신은 원활한 전환을 할 수 있습니다.저는 Indepero의 저자입니다.
로컬 서버에 GitHub를 설치할 수도 있지만 무료로 설치할 수는 없습니다.
https://enterprise.github.com/
가장 일반적인 Git 서버 설정은 아닐 수도 있지만, 다양한 레이아웃, 도구, 미러링 및 권한 체계를 사용해 본 결과, 엔터프라이즈 저장소에 대한 매우 확실한 대안 중 하나가 Gerrit인데, 이는 코드 검토 도구로 더 많이 알려져 있기 때문에 놀라울 수도 있습니다.우리는 그것을 코드 리뷰로 사용하기 시작했고 그것은 g3/gitolite를 폐지하면서 서서히 우리의 주요 저장소가 되었습니다.
- 배포는 간단합니다(기본적으로 .war를 Tomcat에 떨어뜨립니다).
- 리포지토리, 그룹 및 사용 권한(또는 ssh cli)을 관리하는 웹 UI가 있음
- Java ssh 및 git 구현이 내장되어 있으므로 별도로 설정할 필요가 없습니다.
- 사용자 및 그룹에 대한 ldap 지원(일반적으로 회사의 필수 항목)
- 매우 유연한 권한 시스템(프로젝트 그룹, 권한 상속, 읽기/쓰기/쓰기/쓰기 제한/보기 안 함 등)
- 코드 검토 기능(만약 당신이 그것에 관심이 있다면)
- repo 미러링(일부 리포지토리를 github 또는 다른 공용 repo로 푸시)
또한 대규모 프로젝트(예: Android, Chrome)에서 사용되므로 확장성이 뛰어나고 견고합니다.코드 검토 부분을 우회할 수 있도록 하려면 사용자에게 PUSH 권한을 부여하십시오.
원격 호스팅을 위해 다른 사람들이 bitbucket.org 이 무료 개인 저장소를 제공한다고 말했듯, 저는 문제 없이 그것을 사용해 왔습니다.
로컬 또는 LAN 네트워크의 경우 이 scm-manager.org 을 추가합니다. (단일 실행 파일은 설치가 매우 간단하며, Java에서 만들어져 Linux 또는 Windows에서 실행할 수 있습니다.)설치하는 경우를 대비하여 기본 암호는 다음과 같습니다.
Username: scmadmin
Password: scmadmin
한편, 머큐리얼 호스팅 사이트 비트버킷은 Git 저장소도 제공하기 시작했습니다.
따라서 무료로 개인 Git 저장소를 호스팅할 수 있는 중앙 위치인 로컬 서버가 필요하지 않다면 IMO 비트버킷이 가장 좋은 선택입니다.
무료로 개인 및 공용 Git 및 Mercurial 저장소를 무제한으로 이용할 수 있습니다.
유일한 제한 사항은 무료 요금제에서 최대 5명의 사용자가 개인 저장소에 액세스할 수 있다는 것입니다(더 많은 경우 비용을 지불해야 함).
자세한 내용은 https://bitbucket.org/plans 를 참조하십시오!
풀 요청을 원하시면 로드코드와 깃랩의 오픈 소스 프로젝트와 유료 Stash가 있습니다.
위치에 하려면 Git 장소를중 앙위배하면만기치하저 Git:와 .
중앙 컴퓨터의 공유 폴더에 중앙 저장소를 배치하면 모든 사용자가 해당 저장소를 복제할 수 있습니다.
만약 당신이 당신의 로컬 서버에 "진짜" 웹사이트를 원한다면, 나는 Git 호스팅 웹사이트 http://repo.or.cz 를 알고 있습니다.
GitHub보다 기능이 적은 것 같지만 GitHub과 달리 소스 코드를 가져와 자신의 로컬 서버에서 호스팅할 수 있습니다.
고지 사항:저는 repo.or.cz 에 대해서만 읽었을 뿐, 제가 직접 해본 적은 없습니다!
간단한 설정을 위해 중앙 서버에 대한 ssh 액세스를 제공하고 각 사용자의 작업 디렉토리를 이 '키워드'에서 푸시/오프하도록 설정할 수 있습니다.그것은 소규모 팀에게 가장 간단하고 일반적인 설정일 것입니다.
또한 http 서버와 원격으로 관리할 수 있는 기능을 제공하는 gitosis를 조사할 수도 있습니다.그래야 ssh 액세스 권한과 각 커밋에 수반되는 모든 권한을 부여할 필요가 없습니다.
Chris가 언급한 내용에 추가하기 위해 gitosis(http://eagain.net/gitweb/ ?p=gitosis.git)를 사용하여 repo에 실제로 액세스할 수 있는 사용자를 제어할 수 있습니다.
사용법에 따라 로컬 컴퓨터에서 밀어넣을 때 코드가 자동으로 서버의 파일 시스템에 연결되도록 후크(.git/hooks 폴더)를 사용할 수도 있습니다.이를 위한 인기 있는 스크립트가 있습니다. http://utsl.gen.nz/git/post-update .그러나 모든 경우에 필요한 것은 아닙니다.
http://repo.or.cz 은 일부 사용자에게 문제가 있는 경향이 있지만 상당히 좋습니다.
만약 당신이 그들 중 한 명이라면, 당신이 하위 버전 배경을 가지고 있기 때문에 http://unfuddle.com 을 사용해 보는 것을 추천합니다.
"30초 투어"를 확인하십시오. http://unfuddle.com/about/tour/plans
http://code.google.com/p/luna-tool/ 은 github의 나에게 필요한 대부분을 구현하는 scala 애플리케이션입니다.
언급URL : https://stackoverflow.com/questions/5507489/git-server-like-github
'programing' 카테고리의 다른 글
Eclipse에서 철자 검사를 영구적으로 해제 (0) | 2023.05.03 |
---|---|
지점 이름 내에서 사용할 수 없는 문자는 무엇입니까? (0) | 2023.05.03 |
내 이미지가 흐릿해요!WPF의 SnapToDevicePixels가 작동하지 않는 이유는 무엇입니까? (0) | 2023.04.28 |
PowerShell에서 사용자 입력 확인 (0) | 2023.04.28 |
스크롤 뷰어의 하위 요소가 마우스 휠로 스크롤하지 못하게 합니까? (0) | 2023.04.28 |