[git] git tips 한국어판

​https://github.com/mingrammer/git-tips/blob/master/README.md

[Git] Line ending character 관련 설정

git을 윈도우즈에서 쓸 때의 꽤 짜증나는 점은 줄바꿈 문자(CR/LF vs LF-윈도우즈에서는 CR,LF를 쓰고, Unix계열에서는 LF만 쓴다)이다.

CR,LF 문자가 바뀌면 git에서는 그냥 소스 파일 전체를 다른 파일로 여기기 때문에, 크로스 플랫폼 환경에선 매우 짜증난다. 그래서 이를 해결하기 위한 옵션이 있는데, core.autocrlf 옵션이다.

autocrlf 옵션은 세가지 값을 가질 수 있다.

1. true: “git config –global core.autocrlf true”

commit할 때 CR,LF -> LF, check out할 때 LF -> CR,LF.

2. input: “git config –global core.autocrlf input”

commit할 때만 CR,LF -> LF.

3. false: “git config –global core.autocrlf false”

그냥 그대로 쓴다. 저장소에도 CR이 저장된다.

또한, patch를 이용하는 경우에도 CR,LF와 LF 문제로 걸리적 거릴 때가 많다.

가령, format-patch를 만들면, patch 파일은 LF를 사용하게 되는데, 이걸 am으로 적용할 때도 제대로 작동하지 않는다. 같은 곳에서 그냥 연달아 format-patch HEAD^ -> reset HEAD^ -> am 0001-blah.patch를 했을 때조차 적용되지 않는 걸 보면 그냥 아주 돌아버린다.

도움을 주기 위한 옵션은 git am의 –keep-cr 이다.

참고: https://git-scm.com/book/ko/v1/Git%EB%A7%9E%EC%B6%A4-Git-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

git p4 Windows에서 쓰기

아. git-p4를 내가 다시 쓸 일이 생기다니.. OTL

Perforce는 (거지같게도) patch 파일이나 diff 파일 만드는 기능이 빈약해서 git p4 clone 해서 patch 파일을 만들어 사용하면 편하다.

사실 별로 해줄 건 없고,

Git for Windows 깔고,

p4 깔고,

git-p4.py 만 https://raw.github.com/git/git/master/git-p4.py 에서 받아다가 “C:\Program Files (x86)\Git\bin\” 아래에 넣어주면 된다.

git-p4.py 치는 거보다 git p4 로 쓰고 싶으면 “%USERPROFILE%.gitconfig” 를 아래와 같이 고쳐서 alias해주면 된다.

[alias]

p4 = !’C:\\Program Files (x86)\\Git\\bin\\git-p4.py’

기본 config variable은 다음과 같다.

git-p4.user

User specified as an option to all p4 commands, with -u
<user>
. The environment variable P4USER can be used instead.

git-p4.password

Password specified as an option to all p4 commands, with -P
<password>
. The environment variable P4PASS can be used
instead.

git-p4.port

Port specified as an option to all p4 commands, with -p
<port>
. The environment variable P4PORT can be used instead.

git-p4.host

Host specified as an option to all p4 commands, with -h
<host>
. The environment variable P4HOST can be used instead.

git-p4.client

Client specified as an option to all p4 commands, with -c
<client>
, including the client spec. 

참고: http://ericlathrop.com/2012/12/how-to-set-up-git-p4-in-windows/


[Linux] git 사용 시 Proxy 환경 아래서 https 인증이 제대로 안될 때

git 사용 시 Proxy 환경 아래서 https 인증이 제대로 안될 때 다음과 같은 에러 발생 시..

error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://주소.com/프로젝트.git/info/refs
fatal: HTTP request failed


아래처럼 하고 해보자.
 

$ export GIT_SSL_NO_VERIFY=true

우아한 방법은 아니지만 동작은 한다.
다음처럼 설정도 가능.

$ git config –global http.sslVerify false

참고 :  http://stackoverflow.com/questions/3777075/https-github-access

[git] 어떤 commit 이 어느 브랜치에 있는지 확인하고 싶을 때

tag로 checkout을 한다던가 하게되면 이게 지금 어느 브랜치에서 나온건지를 알 수 없을 때가 있다. 또는 어느 commit 이 어느 브랜치 상에 있는지를 알고 싶을 때 라던가.. 이럴 때 사용할 수 있는 것이
git-what-branch 스크립트다.

https://github.com/SethRobertson/git-what-branch  

$ git-what-branch –allref <commit sha1 id>

 

gerrit 프로젝트 Mirroring 하기

gerrit을 사용하면 자기가 access 권한이 있는 프로젝트의 리스트를 ssh를 이용하여 ls-projects 라는 명령을 이용해서 얻어올 수 있다. http://gerrit-documentation.googlecode.com/svn/Documentation/2.2.0/cmd-ls-projects.html 를 참고하면 되는데, 해당 도움말을 보면 이 명령을 이용해서 접근 가능한 모든 Project 를 clone 할 수 있는 쉘 스크립트가 있다.

for p in `ssh -p 29418 review.example.com gerrit ls-projects`
do
  mkdir -p `dirname "$p"`
  git clone --bare "ssh://review.example.com:29418/$p.git" "$p.git" 

done 

이것과 crontab, shell script를 조금 응용하면 계속적으로 업데이트 함으로써 Mirroring 을 할 수 있다.

#!/bin/sh
PLATFORM_HOME=`readlink -e .`
PROJECT_LIST=`ssh -p 29418 review.example.com gerrit ls-projects`
ROOT=”ssh://review.example.com”
DIRNAME=”/usr/bin/dirname”
BASENAME=”/usr/bin/basename”
for PROJECT in $PROJECT_LIST
do
        cd $PLATFORM_HOME;
        echo “——————————————————–“
        echo ” $PROJECT.git”
        if [ -d $PROJECT.git ]; then
                echo “Entering $PROJECT.git”;
                cd $PROJECT.git;
                git remote update
        else
                echo “Cloning $ROOT/$PROJECT.git”;
                PROJECT_DIR=`$DIRNAME $PROJECT`
                mkdir -p $PROJECT_DIR
                git clone –mirror “$ROOT/$PROJECT.git” “$PROJECT.git”
        fi
done

 미러링 사용시에는 받아오기 전에 다음 명령과 같이 설정하여 사용하면 된다.

 git config –global url.”git://<IP>”.insteadOf “git://codeaurora.org”