# TL;DR git remote add upstream ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git git fetch upstream git merge upstream/master # 들어가며GitHub 에서 좋은 프로젝트를 발견했고 유용하게 사용을 하다보면 Contribution 하고 싶은 상황이 생깁니다. 개발자라면 보통 그래요. 이제 Contribution 을 마음먹었으니 프로젝트를 fork 하고 열심히 수정을 합니다. 그리고 Pull Request 를 날리겠죠. 며칠 후에 기분 좋은 메일이 왔습니다. Merged 되었다는 내용이죠 :-)여기까지는 좋습니다. 그리고 시간이 흘러 같은 프로젝트에 또 Contribution 하고 싶은게 생기게 됩니다. 여기서 문제가 생기게 되..
아마도 나와 유사한 업무를 하는 시스템 프로그래머는 대부분 회사 업무에 치여 다른 무언가를 한다는 것은 상상하기 힘들 것이다. 간혹 그렇지 않은 곳도 많지만 …여하튼 시간이 종종 생겨도 다른 무언가를 뚝딱뚝딱 만들거나 미뤘던 공부를 하면서 시간을 보냈는데 우연찮게 GitHub 프로젝트에 발을 담그게 됐다. 나의 첫번째 컨트리뷰트는 TensorFlow-kr 문서 번역. 영어가 능통해서 문장을 술술 풀어 쓰지는 못하고. 또한 TensorFlow의 구조에 대한 이해가 부족하여 일단 다른 사람이 번역한 내용의 소소한 오타 수정이나 마크다운 문법에 대한 오류를 정정해서 컨트리뷰트 하고 있다.컨트리뷰트에 대한 벙법은 홍콩과기대의 김성훈 교수님이 어떤 절차를 수행하면 되는지 너무나 상세히 동영상(Github Flow..
gitlab 운영 중 서버의 IP를 변경하게 되면 이것저것 신경써줘야 하지만 특히 아래 내용을 확인해줘야 한다. 일반 유저들이 프로젝트 clone을 위해 복사하는 주소인데 여기 노출되는 주소도 정상적으로 변경이 되어야 하겠다. 우선 변경하는 방법은 서버에서 아래 파일을 수정하는 것이다. /etc/gitlab/gitlab.rb ## Latest options listed at https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template ## Url on which GitLab will be reachable.## For more details on configuring extern..
subversion에 최초 파일 등록 이후 파일 권한을 변경하고자 하면그 방법이 모호해서 파일을 삭제 한 이후 commit하고, 다시 재 등록하는 방법을 사용해왔습니다. 여간 불편한 방법이 아닐 수 없었는데요,당연히 권한을 변경하는 방법이 존재합니다. 일단 권한을 보는 명령어는 아래와 같습니다.svn proplist 파일이름 이때 실행 권한이 없는 경우에는 터미널에 별다른 메시지가 출력 되지 않습니다.실행 권한이 있는 경우에는 아래와 같은 출력을 나타냅니다.Properties on '파일이름': svn:excutable 실행 권한을 추가하는 명령어는 아래와 같습니다.svn propset svn:excutable ON 파일이름 반대로 실행 권한을 삭제하는 명령어는 아래와 같습니다.svn propdel sv..
앞서 git과 slack을 연동하는 부분은 살펴봤습니다. 이번에는 여기에 instaweb까지 연동해서 push되는 링크를 바로 확인 할 수 있도록 합니다. 이를 위해서는 git이 설치된 곳의 config를 수정해야 합니다. [hooks "slack"] 쪽에 아래 내용을 추가하도록 합니다. changeset-url-pattern = "http://아이피주소:1234/?p=경로;a=commitdiff;h=%rev_hash%" 일단 기본적으로 instaweb이 운영되고 있어야 하며 해당 서버의 아이피 주소와 포트를 입력합니다. instaweb의 기본포트는 1234이므로 변경 없이 사용했습니다. 경로는 http://아이피주소:1234 로 접속해서 summary에 진입했을 때 노출되는 주소를 적어주시면 됩니다. ..
git은 commit 로그를 web에서 확인 하려면 Redmine이나 기타 툴과 연동을 해야 합니다. 여간 귀찮은 일이 아닐 수가 없겠죠? git에서는 이런 고충을 덜어주고자 instaweb을 제공합니다. 관련 사용법은 아래와 같습니다. 1. 명령어 실행을 위해서는 ruby가 필요하므로 서버에 적절히 설치 2. git instaweb -d webrick (git 소스 위치에서 명령어 입력) 3. http://xxx.xxx.xxx.xxx:1234 (web으로 접속, 기본 접속 포트는 1234로 설정되어 있다) 로그를 확인 할 수 있는 페이지 캡쳐는 생략합니다. * 정상적으로 수행되지 않는 경우 perl-CGI가 설치되어 있는지 확인
팀에서 gitlab을 운영해보자는 의견이 있어서 설치를 하게 되었습니다. 그런데 보유하고 있는 서버가 워낙 오래된 모델이라.. root filesystem의 용량이 꼴랑 4G.. OS 등 사용 중인 부분을 제하면 남은 용량은 1.1G. 뭐 이 정도면 무슨 문제 있겠냐 싶어 설치를 시작했지만, yum으로 인스톨 조차 안됐습니다. 패키지 사이즈만 약 200MB에 압축 풀 때 사용하는 공간이 약 700MB .. 여기에 gitlab-ctl reconfigure 명령으로 인해 추가되는 용량 1G정도. 결국은 배운게 도둑질이라고.. 임베디드 쪽만 개발하다 보니 용량을 돌려 쓰는 법을 사용하게 됐네요, 일단 yum으로 install 될 때 사용하는 cache영역(/var/cache/yum)을 다른 HDD 파티션으로 ..
소스관리를 git으로 할때 요즘 실리콘밸리의 핫한 프로젝트인 slack으로 push 메시지를 전달할 수 있습니다. 관련된 API의 사용법을 정리합니다. 우선 사용할수 있는 API를 다운로드를 위해 아래 링크로 이동합니다. https://api.slack.com/community 링크의 하단에 git-slack-hook 을 찾습니다. 관련된 소스를 다운도록 합니다. 다운 받은 소스를 아래 방법으로 git repository에 적용을 시킵니다. For bare repos, copy/rename it as /path/to/your/repo/hooks/post-receive. For normal/non-bare repos, copy/rename it as /path/to/your/repo/.git/hooks/p..
Subversion 사용을 윈도우의 TortoiseSVN으로 옮기면서 윈도우에서 만든 svn 폴더에는 리눅스의 svn 명령어가 동작하지 않았다. 문제는 리눅스 머신에 기본설치 되어 있는 svn 버전이 낮기 때문인데.. 오류 메시지는 아래와 같다.[root@localhost trunk]# /usr/local/bin/svn infosvn: E155021: This client is too old to work with the working copy at'/root/bin/oops' (format 31).You need to get a newer Subversion client. For more details, see http://subversion.apache.org/faq.html#working-copy-..
탐색기에 Tortoise SVN 아이콘이 보이지 않는 경우가 발생을 했을때 검색을 해보면 대부분 레지스트리를 문제 삼지만 막상 그게 문제가 아닌 경우가 더 많은것 같다. 사실 다른 툴과 충돌이나는 경우는 극히 드물고, 오히려 탐색기 재시작하지 않았기 때문이 아닐까? 혹시 탐색기에서 Tortoise SVN 관련 아이콘이 보이지 않는다면 탐색기를 우선 재시작해보자. 일단 실행창을 열고(단축키:win+r) 아래 명령어를 입력한다. tskill explorer 그리고 다시 확인을 해보자. 아마 대부분의 사용자는 이 방법으로 해결되지 않을까..?ㅎㅎ
git pull 했을때 아래와 같이 다른 사람의 commit과 충돌이 나는 경우가 발생합니다.[oops]$ git pullremote: Counting objects: 99, done.remote: Compressing objects: 100% (68/68), done.remote: Total 69 (delta 51), reused 0 (delta 0)Unpacking objects: 100% (69/69), done.From 10.25.1.20:/work/git/oops dab9a8b..b49cd63 master -> origin/masterUpdating dab9a8b..b49cd63error: Your local changes to the following files would be overwrit..
svn에 코드를 등록하면서 항상 .a 파일이 정상적으로 add되지 않아서 문제가 되었습니다.코드 등록은 다 해놓고, 막상 나중에 .a파일이 누락되어 있다는 사실을 인지하고 뒤늦게 add를 했지요. 기본적으로 svn status 명령으로 확인하면 .a 파일에 대한 정보는 보이지 않습니다.이는 subversion의 default로 .a 파일을 ignore하고 있기 때문입니다. ignore파일 리스트는 대략 아래와 같습니다.global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo ignore를 무시하고 확인하려면 아래와 같이 svn status에 옵션을 줍니다.[oops]$ svn st --no-ignoreI test.a 혹은, 아래..
파일을 신나게 수정하다가 원본 상태(최초 clone했을때 상태)로 되돌리고자 할때 사용하는 명령이 있습니다.[oops]$ git status# On branch master# Changes not staged for commit:# (use "git add ..." to update what will be committed)# (use "git checkout -- ..." to discard changes in working directory)## modified: Makefile# modified: READMEno changes added to commit (use "git add" and/or "git commit -a")[oops]$ [git status] 명령으로 확인시에 Makefile과 RE..
git은 기본적으로 remote에 commit을 하고 commit되어 있는 내용을 원격서버로 push하는 개념입니다. remote에는 자유롭게 commit을 할 수 있는데요, 하지만 이게 독이 되는 경우가 있습니다.잦은 remote에 commit을 그대로 원격서버에 push하는 경우에 서버의 log가 지저분해질 우려가 있습니다.(다수의 개발자가 각자 push를 할테니까요) 그래서, 이때 필요한게 remote의 commit들을 합치는 rebase입니다.일단 개념에 앞서 아래와 같이 remote에 commit된 내용들이 있습니다.(git://github.com/tswicegood/mysite-chp5.git 로 테스트를 진행했습니다.)[oops@ mysite-chp5]$ git logcommit f329ec..
git의 경우에는 svn과 다르게 삭제된 파일의 복구가 간단하지 않습니다.(물론 svn과 비교한다면 말이죠..) svn은 삭제된 파일도 아래 명령어로 간단하게 되살릴 수 있습니다.svn up (update) 하지만 git의 경우에는 아래와 같은 절차가 필요합니다.[oops@ ]$ git ls-files -d // 삭제된 파일 리스트 확인README[oops@ ]$ [oops@ ]$ git checkout README[oops@ ]$ [oops@ ]$ git ls-files -d [oops@ ]$ 파일이 여러개인 경우 아래와 같이 사용할 수도 있습니다.[oops@ ]$ git ls-files -d | xargsREADMEMakefile[oops@ ]$[oops@ ]$ git ls-files -d | xar..
- Total
- Today
- Yesterday