사용자 도구

사이트 도구


git:gitblit

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
git:gitblit [2013/06/04 16:46]
kwon37xi [메일 발송]
git:gitblit [2015/03/26 10:58] (현재)
kwon37xi [Gitblit]
줄 1: 줄 1:
 ====== Gitblit ====== ====== Gitblit ======
   * http://gitblit.com Java JGit 기반으로 만들어진 설치가 쉬운 Git 저장소 서버.   * http://gitblit.com Java JGit 기반으로 만들어진 설치가 쉬운 Git 저장소 서버.
 +  * 설치도 쉽고 사용법도 쉽지만 성능은 좀 떨어진다. 프로젝트가 대규모가 될 경우 성능저하가 심했다.
   * [[http://gitblit.com/setup.html|Gitblit 설치/설정]]   * [[http://gitblit.com/setup.html|Gitblit 설치/설정]]
   * [[https://github.com/gitblit/gitblit|GitBlit 소스 리포지토리]]   * [[https://github.com/gitblit/gitblit|GitBlit 소스 리포지토리]]
줄 11: 줄 12:
 client_max_body_size 1000M; client_max_body_size 1000M;
 </code> </code>
 +  * Git 저장소의 크기가 증가하면 저장소 웹페이지 들어가는 속도가 느려진다. 이때 저장소 설정에서 **크기 계산 무시**, **메트릭 요약 무시**를 체크한다.
 +==== Gitblit GO ====
 +  * gitblit GO 버전은 HTTP가 꺼져있다. ''gitblit.properties''의 ''server.httpPort = 8080'' 지정 필요.
 +  * 압축을 풀고 아래 명령으로 실행<code sh>
 +java -server -Xmx1024M -Djava.awt.headless=true -jar gitblit.jar --baseFolder data
 +</code>
 +
 ===== Hook ===== ===== Hook =====
   * Groovy 기반으로 후킹이 가능하다. [[http://gitblit.com/setup.html|Gitblit 설치/설정]] 참조.   * Groovy 기반으로 후킹이 가능하다. [[http://gitblit.com/setup.html|Gitblit 설치/설정]] 참조.
 +==== protect-refs hook ==== 
 +  * Git을 사용하다가 소스가 롤백 되는 현상이 있는데, 이는 보통 개발자가 Rebase, Reset 등을 하고 커밋을 역행했을 때 발생한다(NON-FAST-FORWARD). 
 +  * Github은 기본적으로 이 상태에 대해 경고를 내보낸다. 
 +  * Github 처럼 NON-FAST-FORWARD와 커밋 삭제를 방지하려면 ''protect-refs.groovy'' 훅을 ''preReceiveScripts'' 로 지정한다. 
 +  * 그 때, ''authorizedTeams''에 NON-FAST-FORWARD와 DELETE 작업을 해도 괜찮은 팀을 명시해주면 해당 팀원만 커밋을 할 수 있다.
 ===== 기본 API ===== ===== 기본 API =====
   * [[http://download.eclipse.org/jgit/docs/latest/apidocs/|JGit API Doc]]   * [[http://download.eclipse.org/jgit/docs/latest/apidocs/|JGit API Doc]]
줄 70: 줄 82:
 boolean success = true boolean success = true
  
-commands.each ReceiveCommand command ->+for (ReceiveCommand comment : commands{
     if (...) {     if (...) {
         command.setResult(Result.REJECTED_OTHER_REASON, "${repository.name} 리포지토리에 커밋 실패");         command.setResult(Result.REJECTED_OTHER_REASON, "${repository.name} 리포지토리에 커밋 실패");
줄 76: 줄 88:
         break         break
     }     }
 +
 } }
  
줄 105: 줄 118:
   * ''gitblit.properties''의 ''mail.*'' 프라퍼티에 이메일 서버 정보를 저장해 둘 수 있다.   * ''gitblit.properties''의 ''mail.*'' 프라퍼티에 이메일 서버 정보를 저장해 둘 수 있다.
   * 메일 발송에 관한 자세한 코드는 Gitblit 배포본의 ''sendmail.groovy''를 참조한다.   * 메일 발송에 관한 자세한 코드는 Gitblit 배포본의 ''sendmail.groovy''를 참조한다.
 +
 +==== 작업 대상 Reference 확인 ====
 +  * ''commands'' 객체는 [[http://grepcode.com/file/repo1.maven.org/maven2/org.eclipse.jgit/org.eclipse.jgit/2.2.0.201212191850-r/org/eclipse/jgit/transport/ReceiveCommand.java|ReceiveCommand.java]] 클래스의 컬렉션이다.
 +  * 이 ''ReceiveCommand''의 인스턴스에서 ''getRefName()'' 메소드의 결과는 ''refs/heads/[branch_name]]''형태이다.
 +  * 이를 통해 작업 대상 브랜치를 알아낼 수 있다.
 +
git/gitblit.1370331996.txt.gz · 마지막으로 수정됨: 2013/06/04 16:46 저자 kwon37xi