git 기본 사용시 불편한 점
여러 소스코드 형상관리 툴 중 git을 주로 사용하는데, linux shell prompt에서 사용하다 보면, 불편한 경우가 있다.
아래 두가지 경우였다.
1. 현재 git directory의 branch가 어디인지?
2. 현재 git directory의 변경사항이 있는지?
기본 상태에서...
1번의 경우는, 'git branch' 라고 명령을 입력해야 확인 가능하다.
2번의 경우는 'git status' 라고 명령을 입력해야 확인 가능하다.
이게 은근 귀찮다.
그래서 shell prompt에서 git directory로 진입을 하면 branch명을 표시하고, 해당 branch명을 다시 status에 따라 녹색/빨간색으로 표시하도록 하고자 한다.
.bashrc 파일 수정
c_cyan=`tput setaf 6`
c_red=`tput setaf 1`
c_green=`tput setaf 2`
c_sgr0=`tput sgr0`
parse_git_branch ()
{
if git rev-parse --git-dir >/dev/null 2>&1
then
gitver=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
else
return 0
fi
echo -e $gitver
}
branch_color ()
{
if git rev-parse --git-dir >/dev/null 2>&1
then
color=""
if git diff --quiet 2>/dev/null >&2
then
color="${c_green}"
else
color=${c_red}
fi
else
return 0
fi
echo -ne $color
}
.... 중략 ....
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
# PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\[${c_sgr0}\] (\[$(branch_color)\]$(parse_git_branch)\[${c_sgr0}\])\$ '
fi
붉게 표시한 부분이 실제 shell prompt에 git branch 이름과 색상을 결정하고 표시하는 부분이다.
branch_color( ), parse_git_branch( ) 는 새로 추가한 함수이다.
c_cyan, c_red, c_green, c_sgr0 는 새로 추가한 변수이고, 색상을 결정한다.
작업하면서 헷갈릴 수 있는데, PS1가 shell prompt에 표시되는 내용을 결정한다.
\u : 사용자명
\h : 호스트명
\W : 현재 디랙토리
\w : 현재 경로
이렇게 나타내게 된다. 이외에도 있을 것 같은데, 나는 더이상 필요없어서 알아보진 않았다. 각자 자신의 입맛에 맛게 수정하면 될 것 같다.
PS1에서 branch_color와 parse_git_branch함수를 호출하도록 하여, git 저장소를 사용하는 디렉토리이면 현재의 브랜치명을 표시하고, 수정내용이 있으면 빨간색으로 표시하며 그외에는 녹색으로 표시하도록 하는 내용 이다.
수정 한 뒤, 적용이 잘 되었는지 확인하려면, terminal을 닫은 후 다시 실행 하던가, 아래 커맨드로 .bashrc의 변경된 내용을 현재 terminal에 적용하면 된다.
source ~/.bashrc
적용된 모습
적용 되면 아래와 같이 동작한다.
아무런 수정사항이 없는 경우, 녹색으로 branch 이름이 표시된다.
뭔가 diff가 있는 경우, 빨간색으로 branch 이름이 표시된다.
'개발자의 기록 노트 > Linux' 카테고리의 다른 글
[우분투 16.04] 32bit library를 64 bit 우분투 16.04에 설치하는 방법 (0) | 2017.12.13 |
---|---|
[우분투 16.04] 부팅시 프로그램을 자동으로 시작하도록 설정하는 방법 (How to add auto startup applications in Ubuntu 16.04) (0) | 2017.11.12 |
[우분투] 우분투 16.04 런처(Launcher) 위치 바꾸기 (0) | 2017.07.15 |
[리눅스/Vi] vi editor 문자열 치환(replace) 방법 (1) | 2017.06.27 |
[우분투] Ubuntu 16.04 삼바(Samba) 설치 및 사용하기 (7) | 2017.06.11 |
[우분투] Ubuntu 16.04 화면 캡쳐 방법 (0) | 2017.06.10 |