나름의 목적을 가지고 열심히 포스팅을 하고 있는 블로그이지만,
댓글 하나 없이 몇 날 몇 일이 흐르면 조금 외롭게 되는데, 최근 댓글을 잘 달아주시는 분들이 생겨서 너무 좋다.
그런 감사한 분들 중 한 분이 알고 싶으시다는 내용이기도 하고 내가 하려고 했던 내용이기도 하다.


EGit에 대한 정보는 다음을 참조했다.
     - http://wiki.eclipse.org/EGit/User_Guide


여기에서 알아보고자 하는 내용은 바로 "Eclipse"에서 Git 사용하기!!!



01. Eclipse

     - 개발 환경으로 가장 유명한 도구 중 하나임은 다시 설명할 필요가 없을 것이다.
     - Java 기반의 프로그램으로써 한계를 고스란히 안고 있는 것 또한 사실이다. 무겁다는 말이다.


     - JDK 설치 먼저 해야하는 것은 당연하고...
        → http://www.oracle.com/technetwork/java/javase/downloads/index.html
     - Eclipse 역시 다운 받아서 설치, 아니 압축을 풀어주면 된다.
        → http://www.eclipse.org/downloads/



02. 확인

     - Eclipse에서 사용할 수 있는 Git plugin은 크게 JGit 과 EGit 두 가지가 있다.
     - 그런데, 예전에는 이 plug-in들을 별도로 설치를 해주어야 했지만 최근들어 이걸 기본적으로 제공해주고 있다.

     - 하지만, Eclipse Classic을 설치하면 포함이 안되어있다.


     - Import 하는 부분에 CVS는 있지만, Git은 안보인다.






03. 설치

     - GIt 관련 Plug-in이 내장되어있지는 않지만, 제공은 해주고 있다.


     - [ Help ] → [ Install New Software ]
     - Work with 부분에서 "Indigo"를 골라주자.


     - "Collaboration" 항목을 확장해서 "Eclipse EGit"을 선택하면 된다. 나머지 과정은 그냥 쓕쓕~


     - 설치를 마치고 나면, 재시작을 물어본다. 당연히 재시작해주면 된다.




04. Preference

     - EGit Plug-in의 환경 설정을 하자.


     - [ Window ] → [ Preference ]


     - "Team" → "Git" 항목을 선택하면 위와 같은 화면이 나온다.



05. User Settings

     - 개발 PC에서 Git을 사용하기 위해 환경을 맞출 때에 제일 먼저 해야할 것은 내가 누구인지 알려주는 것이다.


     - 기본적인 환경 설정에 대해서 잘 확인하고 입력해놓자.



06. SSH public key

     - 우리는 지금 Gitolite를 사용하고 있는 환경에 대해서 알아보고 있으므로 공개키를 등록해보자.


     - [ Git ] 항목이 아니라 [ General ] 항목에서 "Network Connections - SSH2" 부분에서 설정을 한다.
     - 앞 포스팅에서 "Git Bash"를 통해 "ssh-keygen"으로 키를 만들었으면 위와 같은 설정을 그대로 사용하면 된다.
     - 물론 만약 다른 경로에 위치하고 있다면, 그에 맞게 변경하면 된다.



07. Import

     - 이제 Remote Repository에 있는 프로젝트를 가져오는 과정에 대해서 알아보자.


     - [ File - Import ] 메뉴를 선택해서 나오는 창을 살펴보면 "Git"이라는 항목이 새로 나온 것이 확인된다.
     - "Projects from Git"을 선택하면 된다.


     - Remote Repository로 부터 받아올 것이니 당연히 "URI"를 선택하면 된다.


     - URI를 작성할 때에 바로 URI를 작성할 필요없이, 밑의 항목들을 입력하면 자동으로 URI가 완성된다.
     - Host, Repository path, Protocol(다시 한 번 ssh 선택해주면 된다), User를 입력해주자.
     - Password는 비워두면 된다. 왜냐하면, 우리는 SSH 공개키를 등록했기 때문이다.


     - 성공적으로 연결이 되면 branch를 선택하는 창이 나온다.


     - 어디에다가 파일들을 받을 것인지, 어느 branch로 시작을 할 것인지, Remote 이름을 확인하자.


     - 그러면 위와 같이 cloning 작업을 수행한다.


     - 다 받아오게 되면 위와 같이 받아온 소스코드를 프로젝트와 어떻게 연결할 것인지를 묻는 화면이 나온다.
     - 일단은 위 스크린샷과 같이 새로운 프로젝트로 만들어보자.


     - 받아온 소스코드 성격에 따라서 프로젝트 타입을 골라주면 된다.


     - 그리고, 프로젝트 名을 적어주면 된다.


     - 그러면, 이제 마무리가 되어야 하는데...

     - 뭔가 이상하지 않은가??????



08. Directory

     - 그렇다. 프로젝트를 만들었는데, 파일들이 안보인다.

     - 앞에서 살펴본 부분에서 Directory들을 한 번 살펴보면 이상한 원인이 보일 것이다.


     - 프로젝트를 만들 때 location을 확인해야 한다.
     - Remote Repository를 clone 받을 때에 지정했던 경로와 동일하게 설정을 해주어야 하는 것이다.


     - 이번에는 제대로 파일들이 보일 것이다!



09. Share Project

     - 그러면 Git 관련 작업을 할 때엔 어떻게 해야할까?!


     - [ Team - Share Project ]를 실행하면 창이 하나 나오는데...


     - 경고 메시지가 나온다. "HOME" 이라는 이름의 환경변수를 설정해야 한다는 말이다.

     - 하지만, 안내메시지처럼 알아서 기본 경로를 잘 잡아준다.
     - 귀찮으면 "Do not show again"을 체크함으로써 끝~

     - 공식 가이드에 의하면 Windows 7 환경에서는 "Users" 디렉토리의 대소문자 오류가 있으니 참고~!!


     - [ Use or create repository in parent folder of project ]에 체크를 하고 "Finish"를 해주면 된다.


     - 모두 설정하고 나면 오른쪽 버튼의 "Team" 항목에 위 스크린샷과 같이 새로운 메뉴가 나타난다.




여기까지~~~~~~
Eclipse 환경에 대해서 너무 길게 포스팅한 것 같지만... 그래도 좀 아쉬운 부분도 있다.



오늘은 이 블로그를 통해서 좋은 인연을 맺게 된 분과 처음으로 만났다.
그로 인해서 너무나 감사한 기회를 얻게 될 것 같은데... 뭔가 정해지면 다시 또 공유해보겠다.

반응형

개인적으로 좋아하는 킬러이야기, 그리고 코믹한 요소...
거기에다가 지금은 잘나가는 배우들로 인해서 선택한 영화


정말 간만에 선택한 한국 영화다.

장진 감독의 파워인지 모르겠지만,
한국 영화이지만 위키피디아, iMDb에 모두 등록이 되어있다.


그렇다고 해서 자세한 내용이 있는 것은 아니지만...

개인적으로 당시 별 관심을 두지 않은 영화였지만,
220만 관중을 동원한 히트작으로 분류가 된다고 한다.



장진 감독이야 다들 아는 바와 같이 너무나 유명한 감독으로 1971년생 아저씨다.
신촌문예 희곡 부문에 당선이 되기도 한 바와 같이 각본을 직접 자주 쓴다.
킬러들의 수다 역시 장진 감독이 각본을 썼다.
대 히트작인 "웰컴 투 동막골"은 제작, 원작, 각본 모두 장진 감독이라는...

더욱 더 웃긴 것은 단역으로도 종종 활약을 하고 있고,
본인의 작품에도 잠깐이라도 얼굴을 비춘다 ^^
물론 킬러들의 수다의 뒷부분에서도...

단편영화 "영웅들의 수다"라는 작품도 했었다고 한다.



주연 4명과 함께 공효진, 정진영, 손현주, 오승현, 김학철, 류승범, 임원희 등등
이 영화에 나온 배우들은 정말 설명이 필요없다!!!

"킬러들의 수다 2"를 배우 그대로 찍어야 한다면,
배우들 몸값만 가지고도 블록버스타가 될 듯한 기세!



한국 영화다보니 참 의견을 말하기가 조심스러운데,
그냥 그런거 무시하고 끄적여보련다.


일단, 장진 감독의 특징으로 보이는 코믹적인 요소는 정말 마음에 든다.
하지만, 꼭 사회풍자에 대한 강박관념이 이 영화에서 엿보인다.

무언가 해결책을 제시해줄 것이 아니라면,
한 가지 정도에만 집중하고 영화에 대한 재미에 더 많은
신경을 썼더라면 보다 더 재미있지 않았을까~라는 생각이 든다.


각 캐릭터에 대한 개성이 보이기는 하지만,
신하균 외의 주인공들은 뭔가 좀 더 있었으면 하는 생각이 든다.

그리고, 뭔가 더 있을 것 같은 분위기의 연출이 보이지만,
그냥 뭔가 더 없어버림에 대한 허무함도 좀 느껴지고...

벌써 10년이 넘은 영화이지만 지금 봐도 재미있게 볼 수 있는 영화라는 점에서는
정말 잘 만든 영화라고 해야할 것 같다.

이 영화에서는 신하균이 가장 돋보이는 것 같다.



뭔가 생각할 꺼리를 제공해주는 부분은 분명히 있지만,
그렇다고 보기엔 좀 가벼워 보이기도 하고...
연기를 못한다고는 못하겠지만,
그렇다고 연기를 잘하는 것 같지도 않고...

연출이 색다르고 재미있게 된 것은 같지만,
좀 엉성하고 어색한 부분이 있는 것도 사실이고...



배우들이 빵빵하니
그것만 보는 재미만으로도 충분할듯...

킬링타임으로도 나쁘지 않은 수준~!!

개인적으로 점수를 줄 수 밖에 없는 것은
원빈을 볼 수 있다는 점과 함께
배우들이 정말 빵빵!!!



개인적으로 이 때 공효진이 젤루 귀여운듯!



IMDb   평점 : 6.90
네이버 평점 : 8.37
나만의 평점 : 6.37


Naver
http://movie.naver.com/movie/bi/mi/detail.nhn?code=31606
Wikipedia
http://en.wikipedia.org/wiki/Guns_%26_Talks
IMDb - Internet Movie Database
http://www.imdb.com/title/tt0295368/

[출처]
* 포스터 및 스크린샷은 위키피디아에서 퍼왔음을 밝힙니다.
(영화 관련 저작권 괴담은 무서워요~)
[ 주의 사항 ]
어디까지나 개인적인 영화평을 적는 공간이니만큼,
개인의 취향은 존중해주시면 감사하겠습니다.
건전한 비판이나 조언은 언제든 환영입니다!!!

반응형

포스팅을 할 때 가장 즐거운 일은 댓글을 확인하는 것이다 ^^
이번에는 저에게 너무나 큰 기쁨을 주는 댓글을 통해 문의하신 것 중 하나에 대해서 포스팅 해보고자 한다.

Gitolite에 대해서 어려워 하시는 분들의 대부분은 Gitolite 때문이 아니라,
SSH에 대한 이해와 더불어 공개키(public key)에 대한 사항 때문에 어려움을 겪게 된다.


Windows에서 공개키 만들고 등록하는 것은 Linux 환경에서 하는 것과 거의 동일하다.
그래도 다시 한 번 되돌아 보는 의미로 살펴보면서 공개키에 대해서 같이 살펴보도록 하겠다.



1. 공개키 등록하기

     - 새로운 사용자, 지금 상황에서는 Windows XP 환경의 사용자가 등록을 하고 싶은 경우를 살펴보자.


     - 왼쪽 하단의 'chaniXP'라는 이름의 사용자가 공개키를 만들어서,
       왼쪽 상단의 gitolite 관리자에게 보내면, 그 관리자가 등록 및 설정을 하고,
       오른쪽의 Server에 push를 하면,
       chaniXP 사용자는 Server로부터 허용된 repositories를 clone 받을 수 있게 되는 것이다.

     - 여기서 중요한 점은 chaniXP라는 사용자는 Server의 계정이 아니다.
     - Gitolite를 사용하게 되면, Server에서는 'git-repo'라는 계정 하나만 있으면 된다.




2. Git Bash

     - Windows 환경에서 Git 설치하기를 하셨다면, Git Bash가 있을 것이다.


     - 무슨 말인지 모르겠다면, 다음 포스팅을 참조하면 된다.
     - http://whatwant.tistory.com/288





3. Windows에서 공개키 만들기

     - Linux 때와 마찬가지로 [ ssh-keygen ]을 실행하여 공개키를 만들어주자.


$ ssh-keygen

     - Windows 환경에서도 분명히 사용자 이름이 있으며, home directory는 존재한다.
     - 그냥 엔터만 쳐도 잘 만들어진다.




4. 공개키 보내기

     - Gitolite 관리자에게 공개키를 보내서 등록해달라고 해야한다.
     - 여기에서는 gitolite라는 계정에게 scp를 통해서 공개키를 보내주도록 하겠다.



     - 중요한 점은 이전에도 한 번 언급했지만, 일반적으로 [ 계정명.pub ] 형식의 파일명을 사용한다는 것이다.




5. Gitolite 관리자

     - 이제부터는 Gitolite 관리자가 해야하는 일이다.

     - 우선은 새로운 파일이 잘 들어왔는지 확인을 하고, 그 계정에게 권한을 부여해주면 된다.


$ nano ./conf/gitolite.conf

     - ./keydir directory 안에 [ chaniXP.pub ]라는 파일이 잘 들어왔는지 확인을 하고,
     - [ ./conf/gitolite.conf ] 환경 파일을 수정해주면 된다.


     - 공개키를 등록한다해도, 그 계정이 어느 repository에 권한을 갖는지 정해주지 않는다면 무용지물이다.




6. push

     - 제일 중요한 과정이다. 바로 서버에 해당 정보들을 보내주어야 모든 것이 이루어진다.


$ git add ./keydir/chaniXP.pub
$ git commit -a -m "add user - chaniXP"
$ git push

     - 위 스크린샷과 명령어 정리한 내용과 차이가 있다.

     - 정말 종종 실수하는 부분인데, 기존에 등록된 파일의 수정이 아니라 새로운 파일이 등록되었을 경우에는
        [ git commit -a -m "..." ] 명령으로 처리가 되지 않는다. 별도로 등록을 해주어야 하는 것이다!!!!!
     - 이 부분만 주의해서 정리하고 push 해주면 모든 것은 끝난다!!!




강원도 솔비치로 2박3일 가족여행을 다녀오자마자 내 방에 처박혀서 포스팅을 하고 있으니,
우리 아가와 와이프가 째려본다.... ㅋㅋㅋ ^^

솔비치 호텔에서 2박 모두 했는데 바로 앞에 바다가 있어서 아가랑 놀러가기에는 정말 좋은 것 같다.
다만, 아직까지는 물이 차가워서 모래놀이 위주로 했지만...

다음에는 호텔이 아니라 콘도로 예약을 해야겠다 ^___^

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

GitHub - Signup  (0) 2012.06.10
Gitolite in Eclipse ( 이클립스 환경에서 Gitolite 접근하기 )  (1) 2012.06.07
Rebase - 또 하나의 merge  (0) 2012.05.30
Gitolite - Personal Branches  (4) 2012.05.28
Gitolite - user, repo 추가하기  (14) 2012.05.26

Git의 가장 큰 장점인 자유로운 branch, 그 branch의 자유로운 사용의 최종 종착지는 바로 merge다.
즉, branch를 생성해서 자유롭게 작업하다가 그 결과가 쓸만해지면 master에 merge하는 것이 일반적인 경우이다.
그런데, 바로 이 자유로운 branch 때문에 repository 내부가 지저분해질 우려가 다분히 많다.

많은 사용자가 달라붙어서 작업을 하다보면 별의 별 희한한 개발습관을 보여주는 개발자가 꼭 존재하고,
이러한 개발자들로 인해서 master branch가 바보가 되어버리는 경우도 종종 발생한다.

문제는 이러한 경우로 인해서 Git의 안전성을 의심받기까지 한다는 점이다.

제대로 이해를 하고 사용하는 사용자들은 무관하지만,
어설픈 지식으로 말도 안되는 행위를 과감히 행하는 개발자들이 문제가 되는 것인데...

그렇다 하더라도 무조건 그 책임을 무지한 개발자 탓으로 할 수는 없다.

그 부분을 해결하는 것은 해당 repository를 운영하는 담당자의 몫이며,
그러한 부분에 대한 분명한 프로세스 또는 가이드를 제시해주어야 한다.

이런 막중한 책임과 임무를 가진 관리자에게 merge 명령어 외에도 또 하나의 무기를 Git에서 제공해주고 있다.
그것이 바로 rebase 이다.


1. branch

    - rebase를 설명해보기 위해서 상황을 준비해보자.


$ git checkout -b hotfix

     - 우선 branch 하나를 만들어 주고,


$ nano ./readme.txt
$ git commit -a -m "modify readme.txt in hotfix br"

     - 파일 하나 수정해서 commit까지 해보자.




2. before log

     - rebase 하기 전에 현재 log를 살펴보고 시작하자.


$ git checkout master
$ git log -3




3. rebase

     - 우선은 'hotfix branch'의 log 부터 확인하고,


$ git checkout hotfix
$ git log -3

     - merge 대신에 우리모두 rebase 하자!


$ git rebase master

     - 어?! 뭔가 rebase가 정상적으로 이루어지지 않은 것 같다!


     - 바로 뒤에 설명을 하겠지만, 위와 같은 상황에서는 rebase를 할 것이 없다.


$ git checkout master
$ nano readme1.txt
$ git commit -a -m "modify readme1.txt in master br"

     - master branch에서 commit 하나 추가해보자.


     - 위 그림과 같이 A commit에서 각 branch 별로 분기를 하도록 한 것이다.


$ git checkout hotfix
$ git rebase master

     - 다시 rebase 해보자.
     - 그런데, log를 보면 이전 master branch에서 작업한 내용까지만 있다. 뭐지?!
     - rebase 후 해야하는 것이 fast-forward 해줘야 한다.


$ git merge hotfix

     - 어?! 뭔가 이상하지 않은가?
     - merge의 다른 방법이 rebase라는데, rebase를 하고도 결국 다시 merge를 해야하다니???

     - 일단, rebase를 하고 나면 아래와 같은 상태가 된다.


     - 뭔가 다른 점을 찾았는지.....?!
     - A에서 분기를 했던 hotfix branch의 B commit이 사라지고,
       master branch의 C commit 뒤에 새로운 B` commit이 생겼다.

     - rebase는 branch로 인한 commit의 분기를 한 줄로 다시 줄을 세운다. 그것도 새로운 commit을 만들어서...
     - 더불어 신기한 것은 기존의 commit은 사라진다(실제로 물리적으로 지워지는지는 나중에 살펴보겠다).

     - 그런데, 여기서 또 하나 잡아야 하는 포인트는 rebase 후에 master branch의 위치가 기존의 위치다.
     - hotfix branch의 내용을 master branch에 반영하기 위해서는 B` commit의 위치로 master branch가 가야한다.

     - 자료들을 보면 rebase 후 fast-forward 해주면 된다는데, fast-forward가 대체 뭔지....?! ㅋ~ 정답은 merge다.


     - 위와 그림과 같이 이루어진다.



앞에서 적었던 내용에 대해서 정정을 해야할 것 같다.

별도의 branch를 만들어서 작업을 하고 그것을 합치는 방법이 merge와 rebase의 두가지가 있다고 했는데,
이 말은 조금 틀린말 같다.

branch를 만들어서 작업한 내용을 합치는 방법은
바로 (즉시 merge)를 하는 방법과 (rebase 후 merge)를 하는 두 가지 방법이 있다.

rebase를 하는 이유는 commit을 깔끔하게 정리해서 일렬로 줄을 세워서 정리를 해주는 것이다.
즉, branch의 남발로 인해서 commit들이 꼬일 우려가 있는 상황에서 단순화 할 수 있는 좋은 수단이다.


다만, rebase를 사용하는 것은 작업하는 branch가 임시일 때 유용하다.
지속적으로 개발 branch를 유지하는 개발 프로세스를 사용한다면 rebase는 적합하지 않다.



오늘 두산이 KIA의 윤석민을 잡았다~!!! ^^
즐거운 하루~~~~ 인데, 포스팅을 하다보니 새벽 1시가 다가오네.... ㅠㅠ

모두 파이팅~!!!

반응형


"Gitolite"는 특이하게 "personal branches"라는 것을 지원해준다.


처음에는 Pro-Git 책에서 이에 대한 언급이 있어서 여기저기 살펴보았었는데,
자료가 너무나 심플하게만 있고 원론적인(?) 이야기만 있어서 그냥 그런갑다~하고 넘어갔었다.


그러다가 회사에서 업무를 하던 중 아래와 같은 개발자의 VOC(?)를 듣게 되었다.

master 브랜치에는 마음대로 push하기가 부담스럽고,
로컬에서 별도로 브랜치를 만들어서 작업을 하면 작업 내용이 날라갈까봐 걱정이 된다.
내가 작업한 내용들에 대해서도 백업이 되면 좋겠다.


즉, 자신이 작업하는 내용에 대한 백업이 필요하다는 말이었다.



이 이야기를 듣고 처음에는 충격이었다.

Git 의 가장 큰 강점이 바로 "분산 형상 관리"이다.

즉, 작업 내용을 commit 할 때마다 서버에 접근하지 않아도 된다는 점이 Git의 강점이라는 것인데,
commit 한 내용이 로컬에 머무른다는 것이 단점이 될 수도 있다는 사실에 좀 충격이었다!!!


절대 위와 같은 Work Flow로 작업을 하라고 가이드 하는 것은 아니다.
지금 설명을 위해서 위와 같은 branch 정책을 가지고 개발을 한다고 가정을 해보는 것이다. 샘플!!!

아래 글로 적힌 내용에 대해서는 잘 읽어보는 것을 추천한다 ^^
(실제 회사에서 이루어지는 것을 반영한 부분도 있으니...^^)

왼쪽은 Server Repository이고, 오른쪽이 Local Repository이다.

Server에서는 master와 develop branch를 운영하는데,
기본적으로 두 개의 branch 모두 어느 정도 다듬어진 결과물이 올라와야 한다.

빌드를 기준으로 말하자면
Server의 master, develop branch 모두 빌드가 항상 성공되어야 한다.

반면, Local에 있는 develop branch에서 개발자가 열심히 개발을 하는데,
Server의 develop branch에는 빌드가 정상적으로 되는 결과물만 push 해줘야 한다.
즉, 이래 저래 작업한 내용을 막 push 하면 안되고, 그것은 local 안에서 commit만 이루어지도록 해야한다.

그런데, 개발자는 작업한 결과물 뿐만 아니라
작업 중인 내용물에 대해서도 서버에 백업이 되었으면 좋겠다고 하는 것이다.

그래서 개발자는 별도의 branch를 local에 만들어서 작업을 해본다.
my_br 이라는 branch를 만들어서 작업을 하고 그걸 다시 local에 위치한 develop으로 merge를 해주는 방식이다.
이제 이 my_br이라는 branch만 어디 다른 곳에 저장할 수 있으면 되는 것이다.


오른쪽에 새로 생긴 부분과 같이 Local에서 작업한 내역을 push할 수 있는 Server Repository가 있다면...?!



앞에서 우리는 Gitolite 설치와 운영에 대해서 알아보았다.
문제는 대부분의 회사에서 일반 개발자들에게 repository 생성 권한을 주지 않는다는 점이다.

물론 개인적으로 별도의 Git Server를 만들어서 그곳으로 push 하도록 한다던지 뭐 다양한 방법이 있겠지만,
우리의 Gitolite는 Personal Branch라는 기능을 제공해준다.



푸헬~ 위에 주저리 주저리 적었는데, 별 쓸모 없는 말만 주절거린 것 같다.
하지만 뭐 그래도 적은 것이 아까우니까.... ^^



1. Gitolite

     - "personal branch"를 사용하기 위해서는 Gitolite 설정을 해줘야 한다.

 

$ ssh gitolite@localhost
$ cd ./repositories


     - Gitolite의 환경파일을 변경해야하기 때문에 Gitolite 관리자 계정으로 접속하자.
     - [ gitolite-admin.git ] repository를 clone 한 곳으로 이동하자.


$ nano ./conf/gitolite.conf


     - [ gitolite.conf ] 파일을 수정하면 된다.

@whatwant = chani gitolite

repo gitolite-admin
    RW+     =   gitolite

repo testing
    RW+     =   @all

repo bare1repo
        RW+                              = @whatwant
        RW+     personal/USER/  = @whatwant


     - 위에 별도로 색으로 칠한 부분이 핵심이다.
     - [ /USER/ ]와 같이 되어있는 부분은 일종의 예약어이다. (personal 으로 되어있는 부분은 임의)

     - 위와 같이 하면 [ refs/personal/사용자계정/ ]이라는 네임스페이스를 사용할 수 있게 되는 것이다.
     - 그런데, 왜 브랜치가 아니라 네임스페이스라고 하였을까?!
     - 실제로 사용할 때에는 [ refs/personal/사용자계정/branchname ]과 같이 사용한다.

$ git commit -a -m "personal branch setting"
$ git push


     - 수정 후 종종 잊는 것이 commit과 더불어 push이다. 꼭 반영하길~




2. push

     - personal branch에 대한 자료가 너무 없어서 개인적으로 알아본 것으로만 정리를 하겠다.
        (적어도 국내 한글로 된 자료 중에서는 최초의 personal branch 관련 자료가 아닐지...)
     - 이제 어떻게 사용하는지 한 번 알아보자.


$ git push origin develop:refs/personal/chani/mywork


     - Local에 있는 특정 branch의 내용을 Server의 내 personal branch의 임의의 branch로 push해 주는 것이다.

     - personal branch는 백업의 의미로 사용하는 것이 큰 것으로 보인다.
     - 즉, 그냥 사용하는 branch와는 그 용도가 조금 다른 것이다.
     - 물론 위의 스크린샷과 같이 변경 사항을 포함하는 내용을 push 할 수도 있지만, 그냥도 push할 수 있다.

     - [ git push origin (local branch 名):refs/personal/(계정)/(임의의 branch 名) ]



3. pull

     - 그러면 personal branch 내용을 받아올 때에는 어떻게 할까?

 

$ git pull origin refs/personal/chani/mywork:wow


     - personal branch의 내용을 내려받을 때엔 임의의 branch로 내려 받는다.

     - [ git pull origin refs/personal/(계정)/(branch 名):(임의의 local branch 名) ]



4. delete

     - 만들었으면 지우는 방법도 알아보자.

 

$ git push origin :refs/personal/chani/mywork


     - 일반 branch를 삭제하는 것과 같은 방법으로 삭제할 수 있다.




5. Server

     - 이렇게 만든 personal branch는 Server에서 어떻게 확인할 수 있을까요?


     - Server에 위치한 repository를 살펴보면 personal branch의 상황에 대해서 알 수 있다.
     - 위 스크린샷은 delete를 해버려서 안보이지만, 만들어놓은 상태라면 위와 같이 따라가서 확인할 수 있다.




헥헥... 알고보면 별 것도 아닌 내용이지만,
워낙에 설명을 찾아보기 힘든 부분이라서 많은 시간을 할애해야만 했다.

그러던 중에, 여기 이 블로그를 통해서 너무 반가운 소식이 들어와서 잠시 헬렐레~했고,
부처님 덕분에 연휴를 맞이했고,
장모님의 환갑을 맞이했고,
뭐 그런 연유로 이제서야 포스팅~ ^^

앞으로 해야할 부분이 너무나 많이 남았네요~ 부지런히 달려봅시다~!!

반응형

어이없게도 Gitolite의 설치나 설정만 신경썼지,
사용자를 추가하는 것과 repository를 추가하는 것은 신경도 안썼다.

소사~ 소사~ 맙소사~!!!

     - http://sitaramc.github.com/gitolite/users.html


물론 앞에서 설명한 것들을 잘 조합하면 사용자 추가하는 방법과 repository 추가 등록하는 방법을 알 수는 있지만,
나름 정리하는 차원에서 다시 한 번 살펴보자.



1. 사용자 추가하기

     - Gitolite는 SSH 공개키 (public key) 파일로 사용자 등록을 한다.


$ ssh gitolite@localhost
$ cd ./repositories/gitolite-admin
$ cd ./keydir
$ scp chani@localhost:/home/chani/.ssh/id_rsa.pub ./chani.pub

     - Gitolite 관리자 계정으로 들어가서 clone 해놓은 [ gitolite-admin ] repository 에 위치하자.
     - [ gitolite-admin ] repository를 살펴보면 [ keydir ] 디렉토리가 있다. 이곳이 바로 공개키를 넣을 곳이다.

     - 내 경우는 "scp"를 이용해서 'chani' 계정의 공개키를 복사해왔다.

     - 여기에서 중요한 점은 가져온 공개키의 파일명이다. chani 계정의 경우 [ chani.pub ]라고 이름을 지어줬다.
     - 그러면 다르게 하는 경우도 있지않을까?라는 의문점이 드는데... 불행하게도(?) 그렇다.

     - 사용자 1명이 1개의 공개키를 사용하면 무관하지만, 복수개의 공개키를 사용할 때에는 어떻게할까?!
     - [ chani@gmail.pub, chani@whatwant.pub ] 처럼 파일이름을 해도 되고,
     - [ chani@gmail.com.pub, chani@whatwant.com.pub ] 처럼 파일이름을 해도 된다.



2. Error

     - 그런데, 여기에서 에러 상황이 발생했다.


$ git add ./keydir/chani.pub
$ git commit -a -m "add user 'chani'"
$ git push

     - 여기에서 경고 메시지를 발견했나요?

remote: WARNING: keydir/chani.pub duplicates a non-gitolite key, sshd will ignore it

     - 어?! gitolite가 아닌 키가 중복된다고?! sshd가 이걸 무시할거라고? 이게 뭔말이지?
     - 매뉴얼 등에서 이런 말은 못들었는데~!!!

     - 그래서 뭔가 이상해서 chani의 SSH 키 파일을 새로 생성해서 gitolite-admin/keydir/ 에 다시 등록해보았다.
     - 그랬더니 이번에는 push가 잘 되었는데...

     - chani 계정에서 ssh로 git-repo@localhost 에 접근을 할 수가 없는 것이다.
     - 새로 생성한 공개키를 git-repo@localhost 에 등록하지 않았으니,
     - 즉, 예전 공개키가 등록이 되어있으니 당연한 것이다.

     - 이 때 번뜩 떠오른 생각이 있으니...


     - "chani"라는 계정의 공개키를 지금 현재 2가지의 목적으로 사용하려고 하고 있는 것이다.
     - 물론 내부적으로는 SSH를 이용하고 있다는 점은 같지만,
     - SSH Console 로 접속을 하는 한가지와 Gitolite로 접속하는 한가지...
     - 즉, 2가지 접근 방법을 하나의 통로로 사용하려는 것이다.

     - 그럼 내부적으로 이걸 어떻게 확인할 수 있을까?


$ nano ./.ssh/authorized_keys


     - Gitolite 관리자 계정에서 [ ./.ssh/authorized_keys ] 파일을 확인해보자.


     - 어?! 이상한 내용이 추가되어 있다!!! [ # gitolite start ~ # gitolite end ] 라는 문장들이다.

     - 정확한 내부 로직은 분석을 해보지 않았지만 (솔직히 좀 귀찮다.... 흑... 분석해보면 도움이 될거라는 것은 알지만)
       일단 기본적인 SSH Login 흐름을 Gitolite가 가로채서 자신의 공개키로 인증하게 하는 것으로 추정이 된다.

     - 그러다보니 여기에서 문제가 발생하는 것이다. 같은 공개키를 사용하려하면 이 놈이 햇갈려하는 것 같다.

     - 결론은 같은 공개키로 SSH와 Gitolite를 사용하는 것은 안된다.
     - 어떻게 하면 할 수는 있겠지만, 문제의 소지가 있는 것은 원천적인 해결책을 찾기 전엔 하지 않는 것이 좋다!


     - 일단, 위와 같은 과정을 통해서 사용자 추가는 되었다!



3. Repository 추가하기

     - Gitolite로 관리하는 repository로 만들기에 대해서 알아봐야 하는데, 실은 엄청 쉽다.
     - 지금까지 Gitolite의 환경 파일 [ ./conf/gitolite.conf ] 파일에 해당 repository 정보만 적어주면 되는 것이다.

     - 문제는 이렇게만 알고 있다고 끝이 아니다!!! 이게 생각보다 복잡하다.



4. New Repository 생성하기

     - 신규로 repository를 생성하는 방법은 어떻게 될까?!


repo bare2repo
             RW+          = @whatwant

     - 실제로 존재하지 않는 [ bare2repo ]라는 이름의 repository에 대해서 권한 설정을 해준다.
     - 당연히 commit 하고 push 하는 것은 잊지 않기를...


     - 이제 어떻게 repository가 생기는 것인지 해보자.



     - 위와 같이 repository를 clone을 해서 사용할 수 있다.
     - 여기에서 포인트는 Server에 [ bare2repo.git ] repository가 없는데도 clone을 할 수가 있다는 점이다.

     - 그럼 여기에서 드는 궁금증. Gitolite의 권한 설정 없이 그냥 아무 이름이나 사용해서 가능할까?


     - 위 스크린샷과 같이 에러가 발생한다.


     - 결론!! 새로운 repository를 만들고 싶으면 [ ./conf/gitolite.conf ] 파일에 권한 설정을 해주면 된다!!!



5. Existing repository

     - 이번 포스팅에서 개인적으로 가장 큰 관심이 있는 부분은 바로 이것이다!
     - 기존에 작업하던 repository를 셋팅한 여기 이 Server에 넣어서 관리를 하고 싶을 때 어떻게 하면 될까?!


     - "git-repo" 계정으로 접속해서 가져오고 싶은 repository를 가져오자.
     - [ scp -r ] 명령으로 repository를 전송 받아오면 된다. (가져오는 방법은 각자 다양하게 있을 것이다)

     - 차례대로 따라왔으면 눈치챘겠지만, 가져왔으면 당연히 [ gitolite-admin/conf/gitolite.conf ] 파일을 손봐야한다.


repo bare1repo
             RW+          = @whatwant

     - "bare1repo" repository에 대한 설정을 넣어주면 된다. (commit & push 는 이제 더 이상 말하지 않아도...)

     - [ RW+    personal/USER/ = @whatwant ] 줄은 무시하시길....^^ 다음 포스팅 때 알게될것이니....

     - bare1repo.git repository를 위치에 놓고 계정 권한 설정을 했으니 이제 OK?????


     - 바로 해당 repository를 clone을 하면 위와 같이 error가 발생을 한다.
     - [ gl-conf ]를 못찾는다고 하는데, 대체 [ gl-conf ]가 뭐길래?


     - 혹시나하고 [ gitolite-admin.git ] repository에서 살펴보니 위와 같이 존재한다.
     - 내용은 계정에 대한 정보이다. 아마도 'GitoLite-CONFig' 파일인가보다.


     - 그래서 복사해 놓은 "bare1repo.git " repository의 파일을 살펴보니 당연하게도 [ gl-conf ] 파일은 없다.

     - 그러면, 이걸 어떻게 만들어 넣을 수 있을까?
     - 이 질문을 바꾸면 Gitolite에게 이 repository의 존재에 대해서 어떻게 알려줄 수 있을까?


$ ~/gitolite/src/gitolite setup

     - [ ~/gitolite/src/gitolite setup ] 명령을 실행시키면 [ gl-conf ] 파일이 생성이 된다.
     - 아무런 메시지를 보여주지 않아서 쫌 썰렁하지만, 너무나 간편하다.


     - 다시 clone을 해보면..... 짠~!!! 성공~!!!!



너무 길게 포스팅을 한 것 같지만...
그래도 매뉴얼 같은 곳에서 제대로 된 설명을 찾아보기 힘든 부분이니 잘 참고하세요~^^

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Rebase - 또 하나의 merge  (0) 2012.05.30
Gitolite - Personal Branches  (4) 2012.05.28
Git 계정 관리 - Gitolite's Repository  (4) 2012.05.20
Git 계정 관리 - Gitolite 설정하기  (3) 2012.05.19
Git 계정 관리 - Gitolite 설치하기  (23) 2012.05.15

주말에 간만에 뭔가 해보려했더니, VirtualBox의 새로운 버전이 냅다 나왔다.

     - https://www.virtualbox.org/wiki/Downloads

This is a maintenance release. The following items were fixed and/or added:

   •VMM: fixed a Guru Meditation VERR_ACCESS_DENIED with certain guests (bugs #7589, #8247)
   •VMM: fixed a Guru Meditation VERR_PAGE_TABLE_NOT_PRESENT with Ubuntu 32-bit guests with nested paging enabled on AMD CPUs (bug #10183)
   •VMM: preserve segment limits and attributes when switching to unreal mode required for some legacy guests to work properly (VT-x without unrestricted guest execution only; bug #9941)
   •VMM: fixed a VM hang after a resume from pause / savestate with SMP guests in rare cases
   •3D Support: several fixes for the Windows WDDM video driver crash
   •NAT: fixed a crash on attempt to process ICMP datagram under some circumstances (bug #10527)
   •Host-only Networking: lifted the maximal number of interfaces to 128 on Linux and Mac OS X hosts (there is no such limitation for Solaris and Windows hosts)
   •EFI: fixed wrong SEC/PEI Core entry point calculation (bug #10531)
   •VRDP: fixed a display update problem (bug #10503)
   •Main: set the proper VM state if savestate failed for some reason (bug #6189)
   •Main: more useful error message if a medium is inaccessible
   •VBoxManage: fixed controlvm savestate if the VM is already paused
   •Mac OS X hosts: addressed issues running on Mountain Lion Preview 3 (bug #10267)
   •Linux hosts: Linux 3.4 compile fixes
   •Linux hosts: fixed wrong help path in some rpm-based packages (bug #10418)
   •Guest Additions: fixed handling of custom environment variables during VBoxManage guestcontrol execute (bug #10581)
   •Windows Additions: fixed guest driver crash of VBoxSF in certain cases (4.1.10 regression, bug #10408)
   •Windows Additions: don't load the WDDM driver if 3D support is not available for Windows 8 guests to keep the guest maintainable in that case (still better to miss some features than providing a blank screen)
   •Solaris Additions: added support for X.org Server 1.11 and 1.12

특별히 뭔가 추가된 것은 안보이고, 몇 가지 고쳐진 것들만 보인다.

요즘 리눅스 커널이 3.대가 되면서, 지원 문제가 가끔 있는데 VirtualBox는 참 발빠르게 대처해주는 것 같다.

반응형

재미있는 외계인 나오는 나름 괜찮은 CG를 보여주는 코믹한 가족영화가 보고 싶어서 선택한 영화!


외계인들이 정말 귀엽고 괜찮다!


돈도 적당히 들였고, 흥행도 나름 괜찮게 나온 영화다.


감독인 "존 슐츠(John Schultz)"는 그닥 유명한 감독은 아닌 것 같다.
정보가 별로 없다.
특이할만한 점은 "쥬라기 공원"의 메이킹 필름, 즉 다큐멘터리에 대한 감독을 했다는 정도...


배우들의 경우 우리나라에서 그닥 그렇게 유명한 애들은 없다.
하지만 연기는 나름 다 괜찮다.
다만, 연기들이 딱 어린이 영화 (디즈니 영화같은?) 수준이다.


여 주인공이라고 부르기는 좀 애매하지만,
좀 큰(?) 누나역으로 나오는 "애슐리 티스데일 (Ashley Tisdale)"이 그나마 좀 유명하다.
앨범도 잘 팔리는 가수겸 배우인데, 1985년생으로 160cm의 키를 자랑(?)한다!
처음에는 히어로즈에 나오는 그 여자로 알았지만 알아보니 아니어서 살짝 아쉬웠다는 ^^


여자 아역배우 "애슐리 보엣처(Ashley Boettcher)"가 아주 귀여웠는데,
얼굴이 익숙해서 많은 곳에서 나왔을줄 알았는데
의외로 정보가 없어서 이상했다는....




뭐 영화는 잘 만들어진 유쾌한 가족영화다.
정확히 말하면 "어린이 코믹 외계인 영화"

CG도 상당히 잘 만들어졌고,
설정도 흔하지만 지루하지는 않고
연기도 어색하지 않고 잘했다.


중간에 스트리트파이터 패러디도 있고... 킬링타임으로 아주 좋았다!



가족영화로... 아니 아들, 딸과 같이 재미있게 볼만한 영화로 강추~!!

하지만, 뭔가를 얻기를 원하거나 유명배우를 원한다면 비추~!!

킬링타임으로는 강추~!!




IMDb   평점 : 5.30
네이버 평점 : 7.38
나만의 평점 : 7.21


Naver
http://movie.naver.com/movie/bi/mi/basic.nhn?code=53299
Wikipedia
http://en.wikipedia.org/wiki/Aliens_in_the_Attic
IMDb - Internet Movie Database
http://www.imdb.com/title/tt0775552/

[출처]
* 포스터 및 스크린샷은 위키피디아에서 퍼왔음을 밝힙니다.
(영화 관련 저작권 괴담은 무서워요~)
[ 주의 사항 ]
어디까지나 개인적인 영화평을 적는 공간이니만큼,
개인의 취향은 존중해주시면 감사하겠습니다.
건전한 비판이나 조언은 언제든 환영입니다!!!

반응형

+ Recent posts