PowerPoint 프레젠테이션

Size: px
Start display at page:

Download "PowerPoint 프레젠테이션"

Transcription

1 Git & Gerrit 교육과정이론과실습 2017 TwoSeed,Inc.

2 1.1 Git 의배경이론 2017 spring TwoSeed presents

3 교육시작전에 이번교육내용은 Perforce 등기존 Tool 에익숙한개발리더들을대상으로 Git 을왜도입해야하는지에대한공감대를만들고자연스럽게 Git 이퍼져나가도록하기위해만들어진과정입니다. 손에익지않은도구는쓸모없는도구입니다. Git 과 Gerrit 이아무리개념이좋더라도손에익지않음무용지물이니, 이번교육을통해재미있게개념도공유하고손에익혀보아요.

4 들어가며... 전세계를주도하는무선사업부개발자...

5 지금까지 Perforce 를능숙하게다루던능력자들이라면 Git 이뭐야? 뭐긴하겠지만 난깃알못!!!

6 Git 을도입하겠다는이야기를듣는다면이런표정아닐까요?

7 하지만 GIT 을우습게보다간 이렇게열받고, 눈커지고, 소리지르게될일이있을지모릅니다. 그래서기존에비해 Git 이어떻게달라지는지같이보도록할께요.

8 참고사이트 볼만한사이트들알려드릴께요. 튜토리얼 : GIT : Git-SCM : Atlassian Git Tutorial : 참고자료 & 인터뷰 DVCS-GIT : SVN : Subversion Vs. Git : Rebase? : : :

9 Git!= Perforce,SVN GIT 을처음들어보면이런생각들이들수있습니다. GIT? GitHub? GIT?, inline command, GiT? Branch, Tag??? Merge, Rebase... Push, Pull, Pull Request???... 또 p4 와비슷한것같지만막상해보면많이달라서, 직접겪어보면아리송한게꽤많다는거죠. 일단 GIT 이뭐길래깃깃거리는지... 지금까지잘쓰던도구를왜버리고 Git 으로가야한다는건지같이둘러보겠습니다.

10 짧게보는 Git 의역사 " 우리네삶의삼라만상처럼 Git 또한창조적파괴와활활타오르는갈등속에서시작됐다."

11 Let there be light Git - Let there be light

12 As is Git Git 의현재 Git 은 2005 년탄생하고나서아직도초기철학를그대로유지하고있다. 그러면서도사용하기쉽게진화하고성숙했다. Git 은미친듯이빨라서대형프로젝트에사용하기도좋다. Git 은동시다발적인브랜치에도끄떡없는슈퍼울트라브랜칭시스템이다 중앙집중형 분산형

13 Global Information Tracker? ( random three-letter combination that is pronounceable, and not actually used by any common UNIX command. "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room. "g*dd*mn idiotic truckload of sh*t": when it breaks

14 Why Git? SVN 과 Git 에대한시간에따른관심도변화 Google Trend 분석 Leaderboard of Java Tools

15 So many books, info but 주위에서흔히볼수있는 git 가이드들은무척친절합니다. 하지만, 다른도구숙련자들에게는오히려혼란스럽습니다.,... why (?). Git.

16 1.2 Git 의구조이론 2017 spring TwoSeed presents

17 Perforce Vs. git 지금부터 Preforce 를기준으로 git 을설명드리겠습니다. Perforce 저장소 Repository 내컴퓨터 Working Space Repository 내컴퓨터 Working Space Working Space 저장소 그런데 git 에선저장소가내컴퓨터에있어요.

18 그럼혼자서만일하나요? 팀이같이일해야하는데 안될리가없죠. 저장소를외부에도만들면됩니다. 이것을원격저장소 Remote Repository 라합니다. 내컴퓨터 Working Space commit Repository 저장소 push Remote Repository 평소에내컴퓨터의 Repository 에저장해두고협업이필요할때원격저장소에 Upload 하는데이것을 Push 라고합니다.

19 Staging DB 서버에바로올릴경우, 생길수있는여러위험때문에일단올려두고 DBA 승인하에 deploy 가됩니다. git 에선 repository 에 commit 하기전에후보가된다는뜻에서 staging 이란개념이생겼습니다. 이곳을스테이지영역이라고하고, 인덱스 (index) 라고도부릅니다. Tracked File - Repository / /. Untracked File -. (add Tracked File )

20 Snapshot Perforce 는 Meta 파일과변경내역을조합하여최신버전의파일을만들고전달합니다. 반면 git 으로최신버전파일들을가져올때는오른쪽과같이최신의스냅샷으로만들수있습니다. git 은복잡한연산과정없이, 마지막에해당하는스냅샷들만으로최신버전을아주빠르게조합할수있습니다. 심지어 Local Repository 에서일어나기때문에네트웤으로인한 Lack 도없습니다. ( 4X ~ 300X 까지 faster) 체감하기에도엄청빠릅니다. 이런개념은 git 의철학인비선형적인개발 (Branch) 을위해만들어졌습니다.

21 분산형 버전콘트롤시스템 Perforce 우리가일했던 Perforce 가이렇게 commit 을할때마다 Repository 에저장되는구조였다면 Git 은 local repository 에 commit 해두고 Remote Reposotory 에 push 하는구조입니다. 이런구조를 D-VCS 라고합니다.

22 Why D-VCS? 이렇게로컬저장소가따로있어서어떤점이좋은지 3 가지특징을알려드릴께요. 1. 일단 commit 할때엄청빠릅니다. Why? = speed,. SSD? git commit 4, 325.

23 Why D-VCS? 2. Commit 할때그까이꺼하고부담없이할수가있습니다. 흠흠... 뭐라하든내컴터인데요뭐... Why? = freedom, conflict

24 Why D-VCS? 3. 네트웤문제가있거나, 서버가교체중이라도계속버전관리가가능합니다. (SVN 때처럼서버문제로개발자전원이멘붕되는사태는없겠죠 ) Why? = redundancy,.

25 GIT (DVCS) 의구조 - DAG "Directed Acyclic Graph" master Object (Tree Detail) SHA-1 Hash blob ace23...gitignore blob dbdbd...gitattributes sndg tree a0bc3.. Assets tree 33d33.. ProjectSettings Object blob b1de7.. build.sh blob 7011e.. README.md Filemode Type SHA-1 Parent Tree Committer Auyhor tsd3d.. sndg1.. this sndg1..

26 GIT (DVCS) 의 Branch 구조 모든 Commit 은 Snapshot 으로저장되며, Branch 와 Master 의분할작업역시각 Snapshot 에대해포인터로연결됩니다. master Branch Head master

27 GIT 의 workflow 전략 분산환경하에서의대표적인 3 가지 Workflow 기준모델을제시합니다. 중앙집중식 Workflow Integration-Manager Workflow Dictator and Lieutenants Workflow Integration Dictator Shared Repository Blessed Repository Blessed Repository 개발자 개발 개발 개발자 Dev private Dev public Dev public Lieutenant 개발자 Dev private Dev public Dev public Lieutenant

28 Git Commands & Wrap up 앞으로다룰명령어를한장의그림으로정리해보았습니다. Git는분산소스관리시스템이다. Git은빈디렉토리는추적하지않는다. ( 최소한번커밋해야추적시작 ) 관리하지않을파일은.gitignore 파일에추가한다. HEAD 는현재브랜치의가장최신 커밋을의미한다. Checkout Clone 기본원격저장소를 origin 라고 부른다. 기본브랜치를 master 라고부른다.

29 1.3 Git 의사용실습 2017 spring TwoSeed presents

30 Git 기본설정 - Git Chapter Target Step #1 Step #2 Step #3 Git 설치 사용 정보및환경설정 폴더생성및초기화 OS 환경에알맞은설치 설치가능한제품 설치진행 사용자기본정보등록 명령어를통한부가환경설정 (Optional) 작업공간생성 초기화명령어사용 작업준비완료및참고사항 Local Install Setting Init

31 Git 기본설정 1. 설치하기 Linux 설치 : Linux에서 Git을설치시에는각 OS의배포판에서사용하는 Package 관리 Tool을사용한다. Fedora 계열 (RedHat, CentOS) $ sudo yum install git-all Debian 계열 (Unubtu) $ sudo apt-get install git-all Windows에서설치하기 : 필요한 Installer를다운받아설치진행 ( 취향에맞게선택활용 ) Windows용 Git 다운로드 : Totoise Git: (msysgit의추가설치필요 : Atlassian SourceTree: GitHub: GitSwarm: GitLab: m/downloads/

32 Git 기본설정 2. 초기설정 Linux 에서설정 (Console 기반 ) I. /etc/gitconfig : 시스템의모든사용자와모든저장소에적용되는설정. git config --system 옵션으로이파일을수정 II. ~/.gitconfig, ~/.config/git/config : 특정사용자에게만적용되는설정. Git config global 옵션으로이파일을수정. III..git/config: 이파일은 Git 디렉토리에있고특정저장소 ( 혹은현재작업중인프로젝트 ) 에만적용. 각설정은역순으로우선시된다. (`.git/config`의설정이 `/etc/gitconfig`보다우선적용.) a. Git 설정내역은사용자홈폴더의.gitconfig 파일에저장되어있으며직접편집또는 Config 명령어를활용하여사용자계정정보를등록한다. ( 필수 ) $ git config global user.name "< 사용명 >" $ git config global user. "< 메일주소 > b. 출력메시지의색상변경을원하는경우 ( 선택 ) $ git config global color.ui auto c. 기본 Editor 변경 ( 선택 ) $ git config --global core.editor vim d. 명령어를단축키로사용하기위해설정 (ex, Commit 을 cm 으로대체 ) ( 선택 ) $ git config global alias.cm commit e. 설정확인 $ git config --list

33 Git 기본설정 2. 초기설정 Windows / MAC 에서설정 (GUI 기반 )

34 Git 기본설정 3. 새저장소 ( 로컬작업공간 ) 설정 1) 작업 Directory 생성 2) 생성된작업 Dir 로이동하여 Git 초기화명령을통해저장공간지정 $ mkdir workdir $ cd workdir $ git init Initialized empty Git repository in /Users/yourname/Desktop/ workdir/.git/ 3) 모든작업을완료시 Git 을통해사용할기본준비가완료되며생성한지정 Dir 에서파일을추가 / 변경등의작업을통해 Version 관리를할수있는기본환경이구성 4) 참고사항 Git 은 DVCS 이므로기존다른도구와달리개인별설정이우선함에유의 개인이저장소를생성하거나원격의저장소에서파일을받기위해서는반드시폴더지정및초기화가필수 4. Git 파일구조 1) HEAD 현재 Branch 의가장마지막 Commit 파일 2) Index (Stage) Index 는워킹디렉토리에서마지막으로 Checkout 한브랜치의파일목록과파일내용을기록하며, Commit 시반영할정보를관리 3) Working Directory 실제작업을진행하는 Dir

35 Git 기본설정 * 시작시참고할내용 1) Git 은빈디렉터리는추적하지않음 2) 형상관리를하지않을파일은.gitignore 파일에추가 (Android studio 및 Eclipse 등의개발도구사용시주로사용 ) 3) HEAD는현재브랜치의가장최신커밋을의미 ( 다른버전관리도구의 Tip revision과유사 ) 4) Origin은기본원격저장소를의미 5) 모든파일추가및변경작업후에는반드시 add 명령을사용하여 Staged 상태로전환필요 6) Git은변경이력을 Reverse delta 방식의 Change set으로관리하는기존도구와달리 Snapshot 방식으로변경을저장 (Staging Area에있는데이터의스냅샷에대한포인터, 저자나커밋메시지같은메타데이터, 이전커밋에대한 포인터등을포함하는커밋개체 ( 커밋 Object) 를저장 )

36 Git 기본명령어사용 Git 을사용하는가장기본적인명령어에대한이해및활용 (add, Commit, push) Chapter Target Step #1 관리 File 의추가 (ADD) Step #2 추가된 File 을로컬저장소에등록하여이력관리 (Commit) Step #3 로컬저장소에등록된 File 을원격저장소에공유 Source 및 File 을 Version 관리하기위해작업공간에추가 추가된파일을식별하여등록 Status 명령을활용하여상태확인 등록된파일의저장소반영 로컬저장소에반영된파일의버전관리 원격의저장소에반영 로컬에서반영된내용을원격의저장소에공유 / 반영 Local Remote Add Commit Push 개발자 Staging Local Repository Remote Repository

37 Git 기본명령어사용 1. ( File ) 1) Add : File Folder Staging Commit 2) Process Local 3) : add / Stage (Index)

38 Git 기본명령어사용 2. 형상등록 ( 로컬저장소에파일 / 폴더등록하기 ) Commit 명령어 : Stage (Index) 에있는 Tracked 상태의파일 / 폴더를로컬저장소에등록, 버전관리 명령어활용 : $ git commit -m Comments" Stage (Index) 에있는 Tracked 상태의파일 / 폴더를로컬저장소에 Commit 하며. -m 은 Commit 메시지를등록하는옵션으로, 여러줄의메시지를쓸경우 -m 을여러개사용가능 $ git commit -a m Comments Tracked 파일중수정중인파일의 Stage (Index) 등록과동시에상태의파일 / 폴더를로컬저장소에 Commit. 단, Untracked 상태의 File 을자동으로 Tracked 상태로변환해주지는않으므로사용에유의 $ git commit -v -m Comments" -m 을사용하지않을때 -v 옵션을사용하면편집기에 Commit 하려는변경사항의다른점을보여주며, 특정파일만 Commit 하려면마지막에파일명을추가하여 Commit 진행

39 Git 기본명령어사용 3. 등록작업취소하기 1) Add 작업취소하기 : Stage 상태의파일등록을해제하기 (Unstaging) 작업순서 : 1. 현재상황에따라, Unstaging 명령어가다름 : git status를통해현재상태를확인 2. git status 출력메시지중 Changes to be committed:.. 아래표시되는명령을통해 Unstaging (add 작업취소 ) 2) Commit 작업수정하기 (amend): Commit 메시지변경이나수정이미처덜반영되어다시반복등록하고할때 명령어활용 (amend): $ git commit --amend : 전체 Commit 된내용을다시 Commit 반영, 이때변경내용이없다면기존내용으로그대로유지 만약 Commit 에서누락된파일이있을경우아래와같이명령을수행하여해당파일을추가하고재 Commit $ git commit -m 'initial commit' $ git add <forgotten file> $ git commit --amend 3) 수정중인파일 (Modified) 을최종 Commit 시점의원래파일로되돌리기 명령어활용 (Check out): $ git checkout <Hash 또는 Branch 등 > 기존 Commit 된파일중현재추가수정중인파일을 Commit 시점으로되돌리는명령

40 Git 기본명령어사용 4. Commit 이력조회하기 (Log 조회및 Diff) Log 명령어 : Commit 이력을조회하고, Commit 된이력간의비교를할수있음 명령어활용 (Git log): 기본 Commit log 확인 $ git log 저장소의 Commit 히스토리를시간순으로보여주며, 최신의내용을우선으로표시 $ git log -p -2 최신 Commit 2 개에대해서비교하여표시하는명령으로직접 diff 를실행한것과같은결과를출력 Log 의다양한 Option 에대해서는 Git 추가기능활용 에서설명

41 Git 기본명령어사용 5. 로컬에서등록한변경내용을원격저장소에저장하기 1) Push 명령어 : 로컬저장소에관리되는버전을원격저장소에전달, 저장하기 작업순서 : 1. Git remote 명령을통해원격 Repository 지정 2. 해당원격 Repository에대해 Push 명령을사용하여로컬저장소의내용보내기 명령어활용 (Git remote): $ git remote -v 원격저장소를확인 $ git remote add [ 저장소명 ] [ 저장소 URL] 원격저장소를추가, 삭제는 rm 인자사용 push 나 pull 실행단계에서원격저장소명을생략하면, 자동으로 origin 이라는이름으로생성 명령어활용 (Git push): $ git push [ 저장소명 ] master [ 저장소명 ] (origin) 원격저장소에 master 브랜치에추가된버전 ( 스냅샷 ) 들을 Upload. Remote repository 만들기 : $ git init --bare [ 저장소명 ].git 로컬저장소가아닌원격저장소를생성하는명령으로 Work directory 가포함되지않는순수 Repository 생성.

42 Git 기본명령어사용 5. 실습하기 Scenario 1. File을 Workdir에생성 2. 생성된파일을 git의 stage영역으로등록 (add) 3. Stage 영역의파일을로컬저장소에등록 (Commit) 4. 저장된 Commit에대한이력조회 (Log) 5. 원격저장소조회및추가 (Remote) 6. 원격저장소에 Commit 이력 Push하기 (Push)

43 Git 저장소공유 Chapter Target Step #1 원격저장소의프로젝트를로컬저장소로복제하기 (Clone) Step #2 원격저장소의변경내용을로컬로내려받기 (Pull, fetch) 원격저장소의프로젝트를로컬에복제 ( 내려받기 ) git remote add + git pull 과거의유사 원본 (origin) 확인 / 추적 / 동기화 원격저장소의내용중작업할최신항목을내려받기 원격저장소에있는 commit 을 fetch 하고, 로컬과 merge 원격서버 (remote) 추가 / 확인 / 추적 / 동기화 Local Remote Local Remote Push Push Local Repository Clone Remote Repository Local Repository Pull, Fetch Remote Repository

44 Git 저장소공유 1. 원격저장소의파일을로컬저장소로내려받기 1) Clone 명령어 : 원격저장소의프로젝트를복제하여로컬에저장소생성 명령어활용 (Git Clone): $ git clone [ 저장소 URL] [ 저장될폴더 ] 원격저장소에있는프로젝트를로컬로내려받기 ( 가장마지막의폴더는지정하지않으면현재위치를기준 ) $ git clone depth [ 숫 ] [ 저장소 URL] 공용프로젝트의경우버전히스토리가많으므로최신 Commit 일부만내려받고자할때사용 Clone 을통해원격의내용을갖고오는경우자동으로원격의원본은 Origin 이라는 Remote 식별자를갖는다. 2) Fetch 명령어 : 로컬에존재하지않는원격저장소의변경내용을확인하여내려받는명령으로, 로컬과병합은하지않음 명령어활용 (Git Fetch): $ git fetch [ 저장소 URL] 원격저장소에있는프로젝트의최신변경내용을로컬로내려받기 ( 병합은하지않음 ) 3) Pull 명령어 : 로컬에존재하지않는원격저장소의변경내용을확인하여내려받은뒤로컬과병합 명령어활용 (Git Pull): $ git pull [ 저장소 URL] 원격저장소에있는프로젝트의최신변경내용을로컬로내려받은뒤로컬의브랜치와자동병합

45 Git 저장소공유 5. 실습하기 Scenario 1. 생성된작업 dir에서원격저장소의프로젝트를 git clone으로내려받기 (Clone) 2. 내려받은파일중필요한파일을수정하기 3. git add 명령을통해수정한파일을 Stage 등록 (Add) 4. git commit 명령을통해 stage 상태의파일을로컬저장소에등록 (Commit) 5. 로컬저장소에저장된변경이력을원격저장소로보내기전에 git fetch를통해원격의최신변경확인 (Fetch) 6. git push 명령을통해로컬에서작업한이력을원격으로보내기 (Push)

46 Git Branch Chapter Target Step #1 Branch 의생성 (Branch, Checkout) Step #2 수정하고반영하기 (Commit) Step #3 Branch 를 Master 에통합하기 (Merge) 작업을위해 Branch 생성하기 생성된 Branch 에서작업진행 진행중인작업의수정을반영 Fast forward 방식으로 Master 에최신버전으로 Merge 작업이완료된 Branch 삭제 Master Branch 2 3

47 Git Branch 1. Branch 생성 1 Master Branch 진행 Process Commit 1 (twos1..) Commit 2 (tosd2..) Commit 4 (tosd4..) Commit 5 (tosd5..) Commit 4 (tosd4..) Commit 5 (tosd5..) 2 Branch 명령어 : Master 에서작업 Branch 를생성하여 Main 과분리된별도의개별작업 Branch 를생성 명령어활용 (Git Branch): $ git branch [Branch 명 ] Master 에서별개의작업 Branch 생성. 단, Branch 를생성해도작업 Head 는여전히현재 Branch(Master) 에존재. $ git checkout [Branch 명 ] Branch 를작업하기위해 Head 를 Branch 로이동하는명령, 이작업을수행해야 Branch 작업의진행이가능 -b option 을추가시 Branch 의생성과 Checkout 을한번에진행할수있음 Branch 를생성후 Check out 을하지않고파일의변경시현재 Master Branch 에변경이반영됨에유의

48 Git Branch 1. Branch 병합 1 Merge 명령어 : Branch 와 Master 의병합 명령어활용 (Git Branch): $ git merge [Branch 명 ] 현재 Branch 에서병합할 Branch 명에대해병합시사용 Branch 를병합하는과정중가장기본적인 Fast-Forward 방식의병합은아래와같이진행 $ git checkout [Branch 명 1] -> Merge 작업을진행할 Branch $ git merge [Branch 명 2] -> 현재 Branch 에서 Merge 하고자하는대상 Branch Branch 를로컬저장소에서생성하고진행하는예제로서나머지응용은다음장에서상세설명 Process Master Head Commit 1 (twos1..) Commit 2 (tosd2..) Commit 3 (git3c..) Commit 4 (git3c..) Commit 5 (git3c..) Merge (Fast-forward) Branch1

49 Git Branch 5. 실습하기 Scenario 1. Branch1 을생성후 Head 를새로운 Branch 로이동 ($ git checkout -b branch1) 2. 새로운 Branch1 에서파일변경후 Commit ($ git commit -a -m 'added file to branch1 ) 3. Branch1 을 Master branch 에 Fast-forward 방식으로 Merge 1. $ git checkout master 2. $ git merge branch1

50 Git 변경이력통합및충돌해결 3Way Merge 활용시 Conflict, Merge, Rebase 기능활용 Chapter Target Step #1 Step #2 Step #3 Branch 의생성 (Branch, Checkout) Branch 를 Master 에통합시 Conflict 발생확인 (Merge) Branch 를 Master 에통합하기 (Rebase, Merge) 작업을위해 Branch 생성하기 생성된 Branch 에서작업진행 진행중인작업의수정을반영하고자할때충돌상황확인 (Reject, Conflict) 충돌발생시확인 전체 Branch 이력을 Master 에반영하기 (Merge) 최종 Branch 이력을 Master 에반영하기 (Rebase) Master 1 A M Branch 2 3 Conflict / Merge Master 1 A 2 3 Branch 2 3 Conflict / Rebase Merge

51 Git 변경이력통합및충돌해결 3-Way Merge 1 3-Way merge 진행 Process Commit 1 (twos1..) Commit 2 (tosd2..) Commit 3 (git3c..) Commit 5 (brc5d..) Commit 7 (mas7a..) Commit 4 (brc4c..) Commit 6 (mrgd6..) Scenario 1) Master branch 에서 Branch1을생성하여수정진행 2) 다시 Master branch 에서 Branch2를생성하고변경반영 3) Branch2를 Master Branch와 Merge 후 Branch2 삭제 (Fast-forward) 4) Branch1을 Master Branch와 Merge 시 3-way merge 진행및 Conflict 해결 (Master branch + Branch1 + Branch2)

52 Git 변경이력통합및충돌해결 상세진행순서 : 1. Branch1 을생성후 Head 를새로운 Branch 로이동 ($ git checkout -b branch1) 2. 새로운 Branch1 에서파일변경후 Commit ($ git commit -a -m 'added file to branch1) 3. 새로운 Branch 를만들기위해다시 Master branch 로 Head 이동하여작업환경전환 ($ git checkout master) 4. Master branch 에서또다른 Branch2 를생성후 Head 를 Branch2 로이동 ($ git checkout -b branch2) 5. 새로운 Branch2 에서파일변경후 Commit ($ git commit -a -m 'added file to branch2 ) 6. Branch2를 Master branch에 Fast-forward 방식으로 Merge 1. $ git checkout master 2. $ git merge branch2 7. Master 에병합한 Branch2 는삭제 ($ git branch d branch2) 8. 다시 Branch1 으로 Head 를이동하여작업환경전환 ($ git checkout branch1) 9. Branch1 에서추가파일변경후 Commit ($ git commit -a -m More added file to branch1 ) 10. Branch1 을 Master branc 에 Merge. 이때, 자동으로원래의 Master, Branch2 의변경,Branch1 의변경 Commit 3개에대한 3-Way merge가진행되며 Fast-forward로는진행되지않으며새로운 Merge commit을 Master에생성 1. $ git checkout master 2. $ git merge branch1 10 번을진행시동일파일에대한변경이중복될경우 Conflict 가발생되며조치는다음장을참조

53 Git 변경이력통합및충돌해결 3-Way Merge 2 3-Way merge 진행시발생한 Conflict 조치 조치순서 : 1 Merge 진행중 Conflict 발생시에는 Conflict 메시지와함께작업진행이되지않음 $ git merge branch1 Auto-merging index.html CONFLICT (content): Merge conflict in [ 파일명 ] Automatic merge failed; fix conflicts and then commit the result. 2 Merge 가진행이되지않는상황을 Status 명령으로확인 ($ git status) 3 2 번을실행시 Unmerged 로표시되는파일을수동으로조치 ($ git mergetool 또는사용지정도구 ) 4 Merge 도구를사용하지않을경우조치한파일을다시 git add 를통해변경등록 ($ git add [ 파일명 ]) 5 Git status 명령을통해변경상태를확인한후, Commit I. $ git status II. $ git commit -> 단, 이때에는 Commit 에표시되는 System 메시지가약간다름

54 Git 변경이력통합및충돌해결 3-Way Merge 에서 Commit 합치기 1 3-Way merge 진행시 Branch 의 Commit 통합하기 Commit 1 (twos1..) Commit 2 (tosd2..) Commit 7 (mas6a..) Commit 3 (git3c..) Commit 4 (brc4c..) Commit 6 (mrgd6..) Scenario 1) Master branch 에서 Branch1을생성하여수정진행 2) Master branch 에서 Branch1의 Commit을하나로묶어서하나의 Commit으로병합 (merge --squash option) 3) Branch1 을 Master Branch와 Merge 후 Branch1 삭제

55 Git 변경이력통합및충돌해결 상세진행순서 : 1. Branch1 을생성후 Head 를새로운 Branch 로이동 ($ git checkout -b branch1) 2. 새로운 Branch1 에서파일변경후 Commit ($ git commit -a -m Changed file to branch1) 3. Branch1 에서추가파일변경후 Commit ($ git commit a m 'Changed file to branch1 ) 4. Branch1을 Master branch에 Merge, 단 Squash option 추가하여 Branch의 Commit을하나로통합 1. $ git checkout master 2. $ git merge --squash branch1 4 번을진행시동일파일에대한변경이중복될경우 Conflict 가발생되며조치는 merge 와동일

56 Git 변경이력통합및충돌해결 Rebase 3 Rebase (Merge 와비슷하지만 Commit 이력을깔끔하게사용시활용 ) Patch 를이용하여 Rebase 를진행하는 Process Snapshot 1 Snapshot 2 Snapshot 3 Master Head Commit 1 (twos1..) Commit 2 (tosd2..) Commit 3 (git3c..) Commit 5 (brc5c..) Commit 4 (mas6a..) Commit Tree Author Size Tosd0 Js.park Commit Tree Parent Size 76abd twos1 Commit Tree Parent Size 969e8 Tosd2 Commit 4 (brc4d..) Committer Js.park Init message Author Committer Js.park Js.park Author Committer Js.park Js.park Branch1 Commit message Commit message Scenario 1) Master branch 에서 Branch1을생성하여수정진행 2) 다시 Master branch 에서파일을수정하고변경반영 3) Branch1의변경사항을 Patch화하여 Master Branch에반영 (Rebase) 4) 두 Branch가나뉘기전인 Commit3 으로이동후현재까지 Checkout한 Branch가가리키는 Commit까지 diff를 차례로만들어어딘가에임시로저장해놓은다음, Rebase할브랜치 (Branch1) 가통합될대상 (Master branch) 을 가리키는 Commit을향하여임시저장해놓았던변경사항을차례대로적용한후새로운 Commit을생성

57 Git 변경이력통합및충돌해결 상세진행순서 : 참고사항 : 1. Branch1 을생성후 Head 를새로운 Branch 로이동 ($ git checkout -b branch1) 2. 새로운 Branch1 에서파일변경후 Commit ($ git commit -a -m 'added file to branch1 ) 3. 다시 Master branch 로 Head 이동하여작업환경전환 ($ git checkout master) 4. Master branch 에서파일변경후 Commit ($ git commit -a -m 'added file to master ) 5. Branch1으로작업환경전환후 Master branch 에 Rebase (Branch1의내용을 Patch화하여 Master로반영 ) a. $ git checkout branch1 b. $ git rebase master 1. Rebase 의결과물은 Merge 와거의동일 2. Rebase 는보통 Remote Branch 에 Commit 을깔끔하게적용하고싶을때사용 3. Master branch 의이력은선형으로존재하므로통합작업시편의성제공 4. Rebase 는하나의프로젝트에서 Branch 를생성하고또거기서 Sub-Branch 를생성했을경우, Sub-Branch 를 Master 에바로통합하는경우에도유용하게사용할수있음 5. 모든이력을관리하여야할경우사용을제하여야함 6. 이미공개저장소에 Push 한커밋을 Rebase 하지말것!!

58 Git 변경이력통합및충돌해결 실습하기 Scenario 1. 동시에두개의 Branch를생성하고작업후 3-Way merge 수행하기 2. Conflict 발생상황을만든후조치하기 3. Squash option을활용하여 Merge하기 4. Rebase를활용하여 Merge와의차이비교해보기

59 Remote Branch 원격저장소를기반으로 Branch 활용 Chapter Target Step #1 Remote Branch 의생성 (Branch, Checkout) Step #2 Remote 의정보를갱신하여로컬에반영 (Fetch) Step #3 Branch 를 Master 에통합하기 (Rebase, Merge) 작업을위해 Branch 생성하기 생성된 Branch 에서작업진행 원격에서 Update 된내용을로컬에반영하기 (Fetch) 원격 Branch 추적하기 (--track) 전체 Branch 이력을 Master 에반영하기 (Push) 작업후로컬 Branch 삭제하기 Master (Remote) Branch (Local)

60 Remote Branch Remote Branch 생성및병합 Remote Repository Master Commit 1 (twos1..) Commit 2 (tosd2..) Commit 3 (git3c..) Commit 4 (brc4d..) Commit 5 (fab2r..) Commit 6 (mas7a..) Commit 5 (tosd5..) Commit 6 (tosd6..) Fetch Local Repository Origin/Master Push Commit 1 (twos1..) Commit 2 (tosd2..) Commit 3 (git3c..) Commit 4 (brc4d..) Commit 5 (tosd5..) Commit 6 (tosd6..) Rebase Master

61 Remote Branch Scenario 1. 원격 Repository에서 Clone으로로컬에프로젝트복제 2. 로컬에서수정및 Commit 진행 3. Remote의 Master에 Commit이별도로진행되어로컬과동기화 (Fetch) 4. 로컬에서작업된내용을 Remote에 Push 5. Rebase를통해원격저장소에새로운 Commit 등록하기 명령어활용 : 1. Remote branch의이름은 (remote)/(branch) 형식으로구성 2. $ git remote show origin : 원격의저장소원본정보보기 3. $ git checkout -b <branch> origin/<branch> : branch 생성과동시에 checkout 하고 remote와동기화하기 4. $ git push origin <branch> 또는 git push <remote> <branch> : 로컬 branch 를원격브랜치로 push 하기 5. $ git push origin <branch>:master : 로컬 branch 를 remote의 master branch 에 push 하기 6. $ git branch -D <branch> : 로컬 branch 삭제하기 7. $ git push origin :<branch> 또는 git push <remote> :<branch> : 원격 branch 삭제하기 8. $ git branch --set-upstream-to=origin/<branch> <branch> : 원격 branch 와로컬 branch tracking 정보설정

62 Remote Branch 상세진행순서 : 실습하기 1. 원격저장소의프로젝트를 Clone하여로컬저장소에생성 - 원격의 Branch를통해새로운로컬 Branch를만들고작업시작시 ($ git checkout -b branch1 origin/ branch1) 2. 로컬저장소의내용변경후 Commit 3. 원격저장소에서변경된내용을로컬에갱신 ($ git fetch origin) 4. 로컬의변경내역을원격저장소에반영 ($ git push origin branch1) - 로컬의 Branch 명을원격저장소에다른이름으로반영을하고자할경우 ($ git push origin branch1 :local1) 5. 원격저장소에변경분반영후로컬의 Branch 삭제하기 ($ git push origin :branch1) 1. 원격의저장소에서 Remote branch 생성하기 2. 로컬에생성된 Remote branch를작업중원격저장소의내용동기화하기 3. 원격저장소에변경내역을 Upload하기 4. Rebase를활용하여원격의저장소 Update하기

63 Git Tag Chapter Target Step #1 Tag 의용도및추가, 삭제 Step #2 Step #3 Tag 의종류 (Lightweight, Annotated tag) Tag 생성 Tag 삭제 (Reset) Tag 의종류및용도 각 Tag 타입의내용 특정버전에 Tag 를생성 생성된 Tag 정보확인 Tag 정보삭제 Master Branch

64 Git Tag 1 Tag 종류및사용 명령어활용 : Tag는 Annotated Tag 와 Lightweight Tag로구성 I. Annotation Tag: Tag 생성자이름, 이메일과 Tag 를만든날짜, Tag 메시지를저장하며 GPG서명추가가능 II. Lightweight Tag: 단순한특정 Commit에대한식별자로별도의정보를저장하지않음 $ git tag : Tag 정보보기 $ git tag -l [tag 명 ] : 특정태그이름검색하여선택적정보보기 $ git show : Tag 정보와 Commit 정보를모두보고자할경우 $ git tag [tag 명 ] : Lightweight tag 생성 $ git tag -a [tag 명 ] -m [Tag 메시지 ] 또는 git tag -s [tag 명 ] -m [Tag 메시지 ] Annotation Tag 생성 (-s option 의경우개인 GPG Key 를서명하고자할때사용하며 git tag -v [tag 명 ] 으로확인 ) $ git tag -a [tag 명 ] -m [Tag 메시지 ] [ 예전 Commit 의 Checksum] 이전 Commit 내용에대하여 Tag 부여시 (Checksum 은 6 자리이상만사용하면됨 ) $ git push origin [tag 명 ] : Push 할경우 Commit 만반영이되므로 Tag 는별도의 Push 가필요함 $ git tag d [tag 명 ] : Tag 삭제 $ git push origin :[tag 명 ] : 원격저장소의 Tag 삭제

65 Git Tag 실습하기 Scenario 1. Tag 생성하기 2. Tag 종류별활용 3. Tag 이력조회하기 4. Tag를원격저장소에공유하기 5. Tag 삭제하기

66 Git 추가기능활용 Stash, Cherry-pick, Commit 내용수정 / 삭제 / 통합등부가기능활용 Chapter Target Step #1 Step #2 Step #3 Step #4 작업의임시저장 (Stash, Cleaning) 작업의이력조회 (git log) 삭제파일만되돌리기 Commit 이력수정 / 삭제 (reset) 작업중의파일을임시저장 저장된임시항목삭제 Commit 이력조회 Log 의상세내용 작업진행중삭제된파일만복구하기 Commit 이력수정 Commit 이력삭제 Step #5 Step #6 Step #7 Bundle Cherry-Pick 특정구문찾기 (Grep) 로컬의작업을하나의파일로묶어내보내기 다른 Branch 의작업내용중특정 Commit 을현재 Branch 로갖고오기 Repository 내의파일특정구문검색

67 Git 추가기능활용 Stash 를활용한작업의임시저장 명령어활용 : 용도 : 작업도중변경한내용을임시로저장후변경전내용을기반으로다른작업을진행하고자할때활용 $ git stash 작업중인변경내용을임시저장소에기록, ( 임시저장후 Workdir 에서작업중이던내용은초기화됨 ) $ git stash list 임시저장된내용보기 $ git stash apply 임시저장된내용을복구하고자하는경우 ( 특정 Stash 를복구하고자할경우이름을추가 ) $ git stash apply --index 임시저장된내용의복구시 Stage 상태였던파일의상태를 Stage 상태인채로복구하고자할때 $ git stash drop stash 를삭제 $ git stash show -p stash@{0} git apply R Stash 적용후다시원복시키고자할때 $ git stash branch Stash 적용후많은변경을진행했을때다시 Stash 적용시새로운 Branch 를만들어서 Stash 저장당시의 Checkout 된내용과임시저장내용을 Merge 하고성공시 Stash 파일을삭제

68 Git 추가기능활용 2. 작업의상세이력조회 Log 명령의 Option 을통한상세이력조회 명령어활용 : 용도 : log를활용하여상세이력조회및 Commit 이력비교 $ git log -U1 --word-diff : 단어단위로 Commit 내역의비교 $ git log stat : Commit history의수정파일통계정보 $ git log --name-status : 수정된파일의목록및추가 / 수정 / 삭제여부확인 $ git log apply --since=2.weeks : 현재부터 2 주전까지한정된정보확인 $ git log all : 현재 Branch 이외의다른 Branch의 Commit 이력을포함한전체이력보기 3. 삭제된파일만되돌리기 작업진행중변경내용중에서삭제된파일만되돌리기 명령어활용 : 용도 : Workdir 에서작업진행중인내용중삭제된내용을되살리기 $ git ls-files -d xargs git checkout -- 현재작업 dir 에서삭제된내용만다시원복

69 Git 추가기능활용 Commit 된내용의수정및통합 명령어활용 : $ git commit --amend 최종 Commit 의내용을현재 Stage 내용으로저장및 Commit 메시지변경 $ git rebase -i HEAD~3 최근 Commit 으로부터 3 번째까지의 Commit 내용을병합 / 수정 ( 대화형으로진행 ) 수정진행시대화형창에서아래내용과같이변경을진행 병합 : pick 으로표기된내용중합쳐질내용을 pick 에서 squash 로변환하고대상은 pick 으로저장 순서 : 항목의순서를재배치 수정 : pick 이라는단어를 edit 으로변경 $ git filter-branch --tree-filter 'rm -f < 파일명 >' HEAD 프로젝트전체에서 Commit 된특정파일을삭제, --all 옵션추가시모든 branch 에명령이적용 Commit 이력의삭제 (Local) 명령어활용 : $ git reset --hard HEAD^ 가장최신의 Commit 을삭제 HEAD^ 는가장최신의 Commit 을의미하며, 최신으로부터 2 개이상의 Commit 을지우고자하는경우 HEAD~2 와같이 ~( 숫자 ) 로표시

70 Git 추가기능활용 Commit 된내용을통합하여하나의 Commit 만들기 명령어활용 : Commit 을지운뒤하나의 Commit 으로통합하기 (reset --hard 활용 ) 1 가장최종 Commit 의 Workdir 을다른 Dir 에복사 (.git 폴더제외 ) 2 $ git reset --hard HEAD~( 지우려는 Commit 숫자 ) 명령을실행하여 Commit 삭제 예 ) 4 개의 Commit 을지우려는경우 $ git reset --hard HEAD~4 3 다른위치에복사한작업 File 을다시갖고와 Work dir 에덮어쓴다음 git add 후 Commit Commit 을지운뒤하나의 Commit 으로통합하기 (reset soft 활용 ) 1 $ git reset soft HEAD~( 지우려는 Commit 숫자 ) 명령을실행하여 Commit 삭제 예 ) 4 개의 Commit 을지우려는경우 $ git reset soft HEAD~4 2 1 번을통해 Commit 을삭제한다음 Commit Soft option 을사용할경우, Commit 은삭제하지만그간의변경내용은 Staging 에보관

71 5. Bundle Git 추가기능활용 로컬작업이력을파일로묶어서내보내기 6. Cherry-pick $ git bundle create [ 내보낼파일명 ] HEAD master 현재저장소의 master 를모두 Export 추가인자값지정을통해저장소의범위지정및특정커밋위주의 Export 가가능하며 Clone 으로다시 Import (ex. $ git clone [Import 할파일명 ] [ 대상 dir]) 1 Branch 의특정 Commit 을선택하여현재의 Branch 로갖고오기 Commit 1 (twos1..) Commit 2 (tosd2..) Commit 4 (tosd41..) Commit 3 (tosd3..) Commit 4 (tosd4..) Commit 5 (tosd5..) 상세진행순서 : 1 Branch1 을생성후지속적인변경 / 등록수행 2 Branch1의특정 Commit을 Master에반영 I. $ git checkout master II. $ git cherry-pick tosd4 -> Cherry-pick 을진행할대상 Commit의키값 III. $ git add [ 파일명 ] -> 위의 Cherry-pick 수행시충돌발생하는경우에수정후등록 IV. $ git commit

72 Git 추가기능활용 특정구문검색을통해특정파일또는 Commit history 찾기 명령어활용 : $ git grep l [ 검색어 ] 검색어가포함된파일리스트를조회, 검색어에정규식의사용이가능. Git grep 에대한설명은 참조 $ git log--grep [ 검색조건 ] Commit 메시지에해당검색조건이있는 Commit 을조회 1. Stash를활용하여작업의임시저장및복원하기 2. Log 명령을활용하여이력조회및 Commit 비교하기 3. Working dir에서작업중인파일삭제후복원하기 4. Commit 이력수정하고, Commit을병합하기 5. Bundle을통해 Export하고 Clone으로 Import 6. Cherry-pick을통해특정 Commit을특정 Branch에갖고오기 7. 특정파일검색하기

73 repo 를이용한 Multi project 관리 Repo 를활용한멀티 Project 관리기능 Chapter Target Step #1 Git project 생성 Step #2 manifest git 생성 Step #3 Repo 사용 각각의개별프로젝트생성 생성된 Git 프로젝트를기반으로 Manifest.xml 생성 여러프로젝트를묶어하나의프로젝트로관리 Repo 명령어활용 Repo 를이용한여러프로젝트동시활용 Git Project A Repo command Git Project B Git Project C manifest.xml 개발

74 repo 를이용한 Multi project 관리 1. 여러 Git project 의통합관리 Repo 를통한 Multi git project 관리 [ 개요 ] Repo: Repository 관리 Tool 로여러 Git Repository 를묶어서관리할수있는 Python 기반 Tool 용도 : 여러 Git project 를묶어서하나의묶음으로관리하며내려받기등작업을한번에진행 Repo 설치하기 (Ubuntu OS 기준 ): 1 $ curl > ~/bin/repo 2 $ chmod a+x ~/bin/repo 3 $ vi ~/.bashrc -> 추가 : PATH=$PATH:~/bin/ 4 $ source ~/.bashrc [ 설정 ] 1 Git project 설정 : 생성된 git proejct 를 --bare 형태로복사하고공개 git 으로설정 git clone --bare <my_project> <my_project>.git 1 manifest.xml 에 Project 정보추가 : 기본적으로관리자에의해배포되며, default.xml 또는 manifest.xml 등의이름으로관리되고, 사용자는해당파일내에추가관리할 Project 를등록할수있다. 관리하는프로젝트를추가시 <manifest> TAG 내에아래의내용을해당 XML 파일에추가 I. <default revision="master 또는 [Branch 명 ]" remote="origin" /> II. <project path= [ 로컬에저장되는경로 ]" name= [ 저장소명 ]" /> Gerrit 의 url 정보도 Manifest 에저장

75 repo 를이용한 Multi project 관리 2. Repo 명령활용 Repo 명령어활용 명령어활용 : ( 기본적으로 git 명령과거의유사 ) $ repo init u [ 원격 URL] 소스를갖고올원격 URL 의선언및현재 DIR 사용초기화, 특정 Branch 를갖고오기위해서 b option 추가가능하며 m option 을사용시특정 manifest file 을지정가능 $ repo sync init 을통해선언된원격저장소에서소스를내려받기, -j optio 을사용하여 Multi thread 작업이가능최초사용시 git clone 과동일하며, 그이후부터는 remote update 및 rebase origin/branch 를실행하는것과동일 $ repo start [banch 명 ] 지정 Branch 에서작업시작 $ repo upload [project 명또는리스트 ] 로컬의변경내용을원격저장소로 update, Review 도구에업로드여부에대해대화창을띄움 $ repo forall -c git reset --hard [ 특정 Tag 명 ] 특정 Tag 배포시해당 Tag 를내려받아반영할때 $ repo status [project 명또는리스트 ] staging area 의변경사항과최종 Commit 의변경사항을비교표시

76 Git 추가기능활용 실습하기 Scenario 1. Repo 설치하기 2. Repo를통해원격저장소의프로젝트내려받기 3. Manifest file에자신의 git 프로젝트추가하기 4. 작업후변경분 Commit 하기 5. 변경상태확인후원격저장소에변경분반영하기

77 1.4 git Training 실습 2017 spring TwoSeed presents

78 Training Scripts A (Basics)

79 Training Scripts B (git cmds) Staging, Commit, Push Clone, Pull, Fetch

80 Training Scripts C (Branch) Branch 만들고, 이동하고 병합 ( 충돌없는경우 )

81 Training Scripts D (Conflict / Branch) Conflict 내기위한준비 Conflict 를해소하고 Merge 수행

82 Merge Vs. Rebase (1) 진행방안 Master 에서 Branch 3 개를각각생성 (chg1~3) 한다음 Master 에서파일을변경하고, chg1 부터 3 까지각각의 Branch 에고유파일생성및등록을통해변경진행 단, 파일변경시 Branch 명과동일또는유사하게생성하고 Commit 메시지를 " 변경순서, 현재브랜치명 " 으로입력하여 Rebase 및 Merge 의차이점을확인할수있도록 Rebase 또는 Merge 를진행전해당폴더체를복제하여 Merge 먼저, 그다음 Rebase 를진행한후, 각각의폴더에서 Git log 및 Gitk 명령을통해 GUI 상태에서변경내역을확인 이내용은로컬에서만진행하여그변화를보다쉽게확인할수있도록진행 여기까지작업후해당작업폴더를복제하여 2 개의폴더로분리하고각폴더의이름을 Rebase, Merge 로분리

83 Merge Vs. Rebase (2)

84 2.1 Gerrit? 이론 2017 spring TwoSeed presents

85 Gerrit? 지금까짓다소생소할수도있는 git 에적응하시느라고생많으셨습니다. D-VCS 도생소한데, 이제코드리뷰란것까지살펴보겠습니다.

86 Code Review? 흠... 여러분이어떤표정일까요? Gerrit 의아이콘 DIFFY 쿵후리뷰뻐꾸기가보여주는장난기처럼코드리뷰도장난기있게하는게중요합니다.

87 Gerrit by Wikipedia 1. 게릿 (Gerrit) 은무료웹팀코드협업도구이다. 소프트웨어개발자가팀에서웹브라우저를사용해소스코드의다른사람의수정사항을검토하거나변경사항을승인또는거부할수있다. 분산버전관리시스템인 Git 과밀접하게통합된다. 2. 게릿은또다른코드리뷰툴인 Rietveld 의포크이다. " 게릿 " 은 Rietveld 라는명칭의유래가된네덜란드개발자 Gerrit Rietveld( 게릿, 리트벨드 ) 의이름이다. [1] 3. 포크 (fork) 또는소프트웨어개발포크 (project fork) : 개발자들이하나의소프트웨어소스코드를통째로복사하여독립적인새로운소프트웨어를개발하는것을말한다.) 4. 소프트웨어리뷰툴인 Rietveld 용패치묶음에서시작하여포크되었고 ACL 패치가 Rietveld 로합쳐지지않으면서저자인귀도반로섬 (Guido van Rossum) 에의해별도의프로젝트로진화했다. [3] 5. 게릿은안드로이드프로젝트의개발을위해션피어스 (Shawn Pearce, JGit 의설립자 ) 에의해구글에서개발되었다. [2]

88 Gerrit History

89 Code Review is Wikipedia : It is intended to find and fix MISTACKES overlooked Guido Van Rossum says : " Goal is COOPERATION, not fault-finding " Cooperation

90 Git Standalone Vs. Git & Gerrit Git Standalone Gerrit 이 git 과같이구성되면구조는아래와같이달라집니다. Working Space Commit Local Repository Push Fetch/Pull Remote Repository Working Space Git & Gerrit Commit Local Repository Fetch/Pull Remote Repository Sync Gerrit Review System Push for Review

91 Gerrit : Overview 리뷰중인코드 / 리뷰할코드 / 리뷰완료된코드목록 웹기반의리뷰 UI / 팀의작업방식선택가능 / 자동화하기쉬움, 커뮤니티 / 문서화

92 Gerrit : diff.view 리뷰할코드의 diff 를보면서의견제시 리뷰할떄는문제점을찾는다기보다, 같이코딩한다는마음으로 Pair Coding!!!

93 Gerrit : review-vote Repository 에넣을지 (+2) / 다른사람의의견을더들을지 (+1,0) / 추가작업할지 (-1,-2)

94 2.2 Gerrit 의구조이론 2017 spring TwoSeed presents

95 Gerrit 은소스 Merge 과정에 Code Review 포함 SVN 기반 SVN 은병합후코드리뷰를별도로수행 Gerrit 은소스 Merge(Push) 과정에 code review 를자연스럽게포함 Gerrit 기반 git 프로세스와통합 Jenkins 연동을통해품질측정결과를 Review 시에활용가능 IDE 도구와연동 출처 : Naver D2

96 접근제어가없는기존 Git Repository 구조 개별작업이가능한분산버전관리시스템 공동개발과정에서일관성을위해중앙저장소 (Authoritative Repository) 를둠 개발자는각각개별로컬 Git 저장소 (Developer1, Developer2) 사용 CI 빌드서버역시로컬저장소사용 이과정에접근제어를하지않기때문에누구나소스를받거나저장할수있음

97 접근제어와 Review 과정을추가한 Gerrit Repository 중앙저장소를기능별로분리하여접근제어관리 Review 를위한임시저장소 (Pending Changes) 최종소스가저장되는중앙저장소 (Authoritative Repository) 개발자는최신소스를가져올때 (Read) 만중앙저장소사용 변경사항저장은임시저장소에 리뷰어는임시저장소에서변경사항조회하여 Review 수행

98 Gerrit 기반 Code Review 워크플로우예시 git clone git branch Git/Repo 환경셋업및소스싱크 재작업요청 개발용로컬브랜치생성 소스코드수정및변경 Commit git commit 개발시작 (Gerrit 프로젝트생성 ) 개발자로컬저장소로소스싱크 개발용브랜치생성 생성한변경에대한 Reivew 요청 git push to refs/for/<branch> 코드작성후리뷰요청 ( 리뷰브랜치로 Push) 리뷰레이블 Verify -1 N 리뷰도구 Gerrit UI 리뷰레이블 Review -2~-1 N 빌드및테스트진행 빌드 / 테스트통과? 코드리뷰 리뷰통과? CI 도구 Jekins, QuickBuild Y Y 리뷰레이블 Verify +1 변경제출및병합 CI 도구로자동코드검증 리뷰어 Code Review 변경사항적용, 중앙저장소 (Authoritative Repository) 에 Merge 및 Conflict Resolution

99 Git 에서커밋 ID 관리 Git 에서내부적으로특정커밋을가리키는커밋 ID 는 SHA-a Hashing 값 사람이보거나이해하기에불편

100 특정커밋에대한알기쉬운포인터 Reference SHA-1 Hashing 으로된커밋 ID 에의미있는이름을부여한것 각브랜치, 태그등의 Referencer 가.git/refs 디렉토리에파일로저장 기본으로사용되는 master 브랜치는 /refs/heads/master 파일에저장 참고로 Gerrit 에서 Review 를받으려면 /refs/for/ 브랜치 로 Push

101 Gerrit 에서는 Review 를위해 Change-Id 를사용 각 Review 를구분하기위한식별자 커밋메시지의마지막에추가해야함 커밋을수정하거나 cherry-pick, rebase 한경우에도변경을방지하기위함 일반적으로 Prefix 로 I 를붙임 출처 : %EB%A0%88%ED%8D%BC%EB%9F%B0%EC%8A%A4

102 Commit Hook 을이용한 Change-Id 동생성 커밋메시지작성시, 매번 Change-Id 를생성하기는매우불편 Git 의 Commit Hook 스크립트를이용하여자동생성기능지원 출처 : %EB%A0%88%ED%8D%BC%EB%9F%B0%EC%8A%A4

103 Git 에서 Commit Hook 의활용 특정 Hook 이벤트 (Git 명령 ) 가실행될때자동으로실행되는스크립트.git/hooks 에저장되는실행가능한모든스크립트 ( 예 : Shell, Perl, Python) 샘플스크립트들이기본적으로들어있으며.sample 확장자만제거하면동작 로컬저장소에서동작하는 Client Hook 과서버중앙저장소에서동작하는 Server Hook 이있음 ( 자세한내용은 Git 매뉴얼참고 )

104 Git 브랜치합치기 공통조상인 C2 를기준으로두개의브랜치 experiment(c3), master(c4) Git 에서브랜치를합하는방법은두가지 : Merge, Rebase

105 Git Merge 를이용한브랜치합치기 Git Merge 를이용한일반적인브랜치합치기 다음 git merge 명령을통해 C3, C4 의변경내용을합하여 master(c5) 브랜치생성 > git checkout master > git merge experiment

106 Git Rebase 를이용한브랜치합치기 > git checkout experiment > git rebase master > git checkout master > git merge experiment 다른브랜치의내용을 Merge 하지않고 Patch 만들어추가하는방법 히스토리가트리구조가아닌선형. 단, 최종소스는 Merge 와동일 서버에 Push( 다른사람과공유 ) 한소스에 Rebase 하면안됨

107 Review 요청및처리과정 (1) Fetch 중앙저장소 (5) Fetch and Review 리뷰어 (2) 개발작업 (6) Submit 개발자 (3) Push for Review Pending Changes (4) Fetch and Verification Build 개발자는중앙저장소에서가져온소스를기준으로개발작업 변경된소스에대한 Review 요청을위해임시저장소로 Push Push 과정에 Verify, Review 요청을선택 Quick Build

108 Verify 와 Review (1) Fetch 중앙저장소 (5) Fetch and Review 리뷰어 (2) 개발작업 (6) Submit 개발자 (3) Push for Review Pending Changes (4) Fetch and Verification Build Quick Build Verify 과정에코드가컴파일, 실행등이정상적으로되는지검사 Verify 는주로 CI(Jenkins 등 ) 에의해자동으로수행됨 Review 는리뷰어에의해코드가프로젝트의가이드라인에따라작성되었는지검사

109 Verify 와 Review 수동 Verify 화면 Review 화면 일반적으로자동으로처리 수동 Verify 가능 +1 이면통과 리뷰어가하는일반적인 Review 일반적으로결과가 +2 이면통과 결과가 -2 이면 Merge 하면안됨

110 CI(Jenkins, Quck Build) 를통한 Verify 과정 Jenkins 는 Git Client Plugin, Git Plugin, Gerrit Trigger Plugin 을사용 Gerrit 에리뷰가제출되면빌드트리거가동작하여 Git 저장소로부터소스를가져와빌드 / 테스트후결과를제출 QuickBuild 는 Gerrit 이제공하는 REST API 를통해리뷰제출을감지하여빌드를트리거하며, 빌드 / 테스트결과를제출 빌드에성공하면 Verified/+1 을부여

111 CI(Jenkins, Quck Build) 를통한 Verify 과정 Jenkins Verify 결과 Jenkins Verify 결과제출 Verify 결과에 CI 도구가사용한 Gerrit 계정표시 QuickBuild Verify 결과

112 Gerrit 권한구조의이해 All Projects 권한만있는프로젝트 오픈소스 비공개 Gerrit JGit Project X Project Y 상속을이용한권한구조 자식프로젝트나하위그룹은부모의설정을상속 그룹에기반한권한 개별사용자는역할을가진그룹을통해권한부여 자원 주로 Git Reference 인권한제어의대상 제어 - Push, Merge 등저장소에대한접근권한과코드리뷰권한을포함

113 기본권한을설정하는 All-Projects Gerrit 이초기화될때자동으로생성 실제프로젝트가아닌 Gerrit 내모든프로젝트들의권한에대한기본설정 Global Capabilities Gerrit 시스템에대한관리기능 ( 예 : 사용자생성 ) 으로여기서만설정가능 All-Projects 권한 Reference Git Reference 단위의권한제어로하위프로젝트에서오버라이드가능

114 Project 별상세권한설정 상속받은상위프로젝트의권한을기본적으로사용 프로젝트별로권한을오버라이드가능 개별 Project 권한 왼쪽의예에서 reviewtest 프로젝트는기본적으로 All- Projects 의권한을상속하지만, 특별히 reviewtest 그룹 ( 프로젝트가아님에주의 ) 에게목표브랜치를생성하거나리뷰 (-2 ~ 2 사이점수 ) 를하고승인결과를제출할수있는권한부여

115 Git 저장소관련권한 Git 저장소에대한권한 Read Push(+Force) 브랜치복제권한 존재하는브랜치에대한 Fast-Forward ( 또는강제 ) 푸쉬권한 Create Reference Create Signed Tag Create Annotated Tag Forge Author Identity Forge Committer Identity Owner 새로운브랜치를생성할수있는권한태그를생성할수있는권한변경의저자및커미터저자정보를수정할수있는권한 refs/* 에적용하면프로젝트에대한전체관리권한부여 Project 권한설정에서위의 Git 저장소관련권한을어떤그룹에게부여할지지정가능

116 코드리뷰권한 코드리뷰관련권한정의 Push refs/for/refs/* 리뷰요청권한 Push Merge Commit refs/for/refs/* Merge Commit 에대한리뷰요청권한 코드리뷰관련권한예 코드리뷰를위해서는개발자가리뷰어가해당 Project 의관련 Reference 에적절한권한이있어야함 위의예에서 Gerrit 사용자는누구나 Review 를요청할권한이있음

117 코드리뷰권한 코드리뷰관련특수한권한 Label-<LabelType>- X..+Y Submit refs/heads/* refs/heads/* 진행중인리뷰에대해리뷰를올리고 X 에서 +Y 사이의점수를부여할권한 LabelType 에는 Review 와 Verify 가있음 리뷰결과로변경 (Change) 에대한중앙저장소브랜치병합 (Merge) 요청권한병합요청은바로처리되어병합이이루어짐 Abandon refs/heads/* 리뷰결과로변경에대한폐기권한 Rebase refs/heads/* 리뷰중인변경을목표브랜치로리베이스 (Rebase) 할수있는권한 Project 권한설정에서위의특수한리뷰관련권한을어떤그룹에게부여할지지정가능

118 사용 와그룹 모든 Gerrit 사용자는그룹에속해야해당권한을부여받을수있음 그룹은프로젝트의권한설정에서역할을부여받음 그룹은다른그룹을포함할수있음 LDAP 과같은외부시스템의그룹정보를가져와재정의해서사용가능 사용자별권한제어를위해서는특수한플러그인 (singleusergroup) 을통해서가능

119 기본그룹과역할 Administrators - Gerrit 관리자 (Gerrit 설치후최초생성된계정 ) Anonymouse Users 익명으로접근가능한사용자 ( 여기에권한을부여했다는의미는공개프로젝트임을의미 ) Project Owners 프로젝트의소유자로브랜치생성등프로젝트에대한전반적관리권한가짐

120 2.3 Gerrit 의사용실습 2017 spring TwoSeed presents

121 Gerrit 코드리뷰의작업흐름 시작 Change-ID 1. 변경 ID 생성 refs/for/<branch> 2. 리뷰를위한 Push 개발자리뷰어 시스템 4. 리뷰어추가및요청 3. 빌드, 테스트, 검토 (Verify) 커미터역할 5. 코드리뷰및검토 (Review) 6. 평가점수판별 7. 변경사항리베이스 (rebase), 재작업 (rework), 수정 (amend) 종료 8. 변경 ID 폐기 9. 변경 ID 제출 10. 변경 ID 병합 종료

122 Gerrit 프로젝트시작 사용 생성 Apache HTTPD 에계정생성및로그인 Gerrit 사용자정보입력 최초생성된사용자는자동으로관리자그룹에등록됨 > sudo htpasswd -c /etc/apache2/passwords admin (passwords 파일새로생성시에는 -c 옵션사용 ) > sudo htpasswd /etc/apache2/passwords dev01 > sudo htpasswd /etc/apache2/passwords rev01 전체이름입력 ssh 인증에필요한 PKI 공용키등록 (git ssh 인증과동일 ) 이메일등록 ( 사용자지정에사용되므로필수 )

123 Gerrit 프로젝트시작 그룹지정 Gerrit 그룹생성 그룹에사용자추가 개발자와리뷰어모두추가 reviewtest 그룹이름입력 dev01 추가할사용자입력

124 Gerrit 프로젝트시작 프로젝트생성 Gerrit 프로젝트생성 Only serve as parent for other projects: 권한만있는프로젝트 Submit Type: 변경을저장소에병합하는방법 저장소 clone 명령 projtest 프로젝트이름입력 상속할프로젝트

125 Gerrit 프로젝트시작 프로젝트구성 프로젝트소스및브랜치조회 프로젝트권한설정 브랜치생성권한부여 : refs/heads/* 에대한 Create Reference 권한을그룹에부여 소스조회 (gitweb) 브랜치생성권한 reviewtest

126 Gerrit 프로젝트시작 저장소 clone 프로젝트저장소 clone 프로젝트정보에있는 git clone 명령사용 (git config 로개발자 ID 지정 ) Change-Id 자동생성을위한커밋훅스크립트도같이복사 저장소 clone 명령 with commit-msg hook ssl > git clone ssh://dev01@yourdomain.net:29418/projtest && scp -p -P dev01@yourdomain.net:hooks/commit-msg projtest/.git/hooks/ (git 저장소 clone 및 commit-msg 커밋훅스크립트복사 ) > git log commit c01cfb0e3f8c59bb65a8366fb953f881cc1a184c Author: 정명훈 <javalove93@gmail.com> Date: Fri May 1 13:15: Initial empty repository

127 1. 변경 ID 생성 ( 개발 ) 브랜치생성 로컬에서만브랜치작업하여병합하는방법 서버에브랜치생성하는방법 ( 프로젝트에대한브랜치생성권한필요 ) 소스변경작업 > git checkout b mybranch ( 로컬브랜치생성 ) Switched to a new branch 'mybranch > ssh -p dev01@yourdomain.net gerrit create-branch projtest mybranch master (master 브랜치를기반으로 mybranch 라는브랜치서버에생성 ) > vi branch.txt This is a file in new branch > git add branch.txt > git commit -a (Change-Id는 commit-msg 스크립트에의해자동부여됨 ) [mybranch b9d536f] mybranch file 1 file changed, 1 insertion(+) create mode branch.txt

128 1. 변경 ID 생성 ( 개발 ) 로컬브랜치병합 로컬에서만브랜치작업하여병합하는방법 로컬에만브랜치흔적이남음 > git checkout master Switched to branch 'master > git merge mybranch Updating 2dc8723..b9d536f Fast-forward branch.txt file changed, 1 insertion(+) create mode branch.txt

129 2. 리뷰를위한 Push ( 개발 ) 리뷰전용브랜치로 Push 프로젝트정보에있는 git clone 명령사용 (git config 로개발자 ID 지정 ) Change-Id 자동생성을위한커밋훅스크립트도같이복사 > git push origin HEAD:refs/for/mybranch ( 서버브랜치를사용하지않는경우에는 refs/for/master) Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 342 bytes 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: Processing changes: new: 1, refs: 1, done remote: remote: New Changes: remote: remote: To ssh://yourdomain.net:29418/projtest * [new branch] HEAD -> refs/for/mybranch

130 2. 리뷰를위한 Push ( 개발 ) Push 과정에리뷰자지정 Push 과정에토픽지정 관련된변경들을묶어서하나의리뷰로지정 > git push origin HEAD:refs/for/mybranch%r=rev01@yourmail.net (rev01 리뷰어로초대 ) > git push origin HEAD:refs/for/mybranch%topic=mytopic (mytopic 토픽지정 ) > git push origin HEAD:refs/for/mybranch%topic=mytopic,r=rev01@yourmail.net ( 토픽과리뷰어동시지정 ) 초대된리뷰어 토픽 (mytopic) 으로묶인리뷰

131 3. 빌드, 테스트, 검토 ( 시스템 ) CI 도구 (Jenkins, Quick Build) 를이용하여자동빌드 / 테스트및결과를 Gerrit으로제출 Jenkins 설정 Gerrit 계정생성및 SSH Key 등록 계정을 Non-Interactive Users 그룹에등록하고 Project 권한부여 Project 에대한 Verify 관련권한부여 Gerrit 에 Jenkins 용계정생성 Gerrit 의 Jenkins 계정에 Jenkins 시스템의 SSH Key 등록

132 3. 빌드, 테스트, 검토 ( 시스템 ) Jenkins 설정 Gerrit Git 저장소설정 빌드를위한소스 Fetch Gerrit 트리거설정 리뷰제출시자동으로빌드 / 테스트동작 Git 소스주소 트리거에사용할 Gerrit 서버 빌드할브랜치 트리거대상프로젝트및브랜치

133 4. 리뷰어추가및요청 ( 시스템 ) 웹 UI 에서생성된리뷰조회 리뷰어추가 ( 초대 ) 커밋메시지및변경 ID 리뷰어및추가 필요한리뷰활동 리뷰대상소스

134 5. 코드리뷰및검토 ( 리뷰어 ) 웹 UI 에서변경된코드에대한리뷰및검토활동 기존소스와변경된소스를비교할수있는리뷰도구를활용한코드리뷰 소스중간에인라인의견 ( 커맨트 ) 추가 코드리뷰 소스중간에리뷰커맨트 Side-by-Sde 코드리뷰도구

135 5. 코드리뷰및검토 ( 리뷰어 ) 웹 UI 에서소스인라인편집 리뷰도중 UI 내에서바로코드를편집하여새로운패치셋생성 소스편집모드 인라인소스편집 편집내용반영

136 5. 코드리뷰및검토 ( 리뷰어 ) 리뷰피드백제출 부여된리뷰권한 ( 프로젝트권한에서설정 ) 에따른피드백제공 개발자 ( 리뷰요청 ) 에게전체적인의견제공가능 프로젝트권한설정 리뷰피드백 전체적인의견 리뷰, 검토권한 관리자 -2 ~ 2 점부여가능 일반사용자 -1 ~ 1 점부여가능 리뷰와검토점수 변경제출 / 병합권한 변경폐기권한 코드리뷰 (-1 ~ +1) 만가능한경우

137 5. 코드리뷰및검토 ( 리뷰어 ) 리뷰예절및프랙티스 리뷰및토론내용공유 : 모든의견은 Gerrit 을통해변경내용과같이관리및공유함 모든파일을리뷰 : 다른사람의코드를완전히이해하기위해변경된모든파일을리뷰 코드에대한의견 : 리뷰는다른사람의수준을평가하는것이아닌코드개선목적을위해코드에대한의견만을제공하는것임 모든의견에대답 : 모든의견과질문에대해반영여부와함께답변을제공 소스코드로의견제시 : 가능하면변경에대한대안이될수있는구체적인코드를제시 한번에한가지씩변경 : 리뷰의근본적인목적은변경을반영하는것으로, 리뷰에너무많은시간이들어가지않도록리뷰요청하는변경단위를최소화 토픽사용 : 큰변경은작게나누어서토픽으로구분

138 5. 코드리뷰및검토 ( 리뷰어 ) 코드리뷰용어 NIT(picking): 작은변경을필요로하는사소한문제 Optional: 리뷰자의개인취향으로원저자가무시할수있음 RFC(Request For Comments): 반드시병합될필요없이아이디어를공유하기위한리뷰 WIP(Work In Progress): 초안성격의변경으로리뷰를통해사전피드백을수집하기위함

139 6. 평가점수판별 ( 시스템 ) 시스템을통한평가점수판별 저장소에커미터권한을가진담당자가 +2점을부여할경우리뷰는통과된것으로봄 커미터권한을가진담당자가 -2점을부여할경우에리뷰는거부된것으로봄 대체로 +1점두개가모인다해서 +2점으로간주하지는않음 검토실패시 -1점을부여하고저장소에병합되어서는안됨 조직내부에서규칙을정해야함 리뷰제출버튼활성화 리뷰와검토점수통과요건 ( 각 +2, +1) 만족 검토는통과했으나리뷰통과실패

140 7. 변경사항리베이스, 재작업, 수정 ( 개발 ) 부정적인점수를받은리뷰에대한재작업 git-review 를이용한리뷰중인소스다운로드 리뷰중인변경 (change) 과패치셋기준으로다운로드하여로컬에브랜치생성 > sudo apt-get install git-review > vi.gitreview ( 프로젝트작업위치에생성 ) [gerrit] host=yourdomain.net port=29418 project=projtest.git defaultbranch=master 변경 (Change) 번호 > git review l ( 진행중인리뷰목록조회 ) 10 master mytopic 2 Found 1 items for review > git review d 10 (Change 10 번소스다운로드하여로컬에브랜치생성 ) Downloading refs/changes/10/10/1 from gerrit Switched to branch "review/_1/mytopic"

141 7. 변경사항리베이스, 재작업, 수정 ( 개발 ) git 을 fetch 를이용한리뷰중인소스다운로드 리뷰중인변경 (change) 과패치셋기준으로다운로드하여로컬에브랜치생성 리뷰중인소스다운명령 > git fetch ssh://dev01@yourdomain.net:29418/projtest refs/changes/12/12/1 && git checkout FETCH_HEAD From ssh://yourdomain.net:29418/projtest * branch refs/changes/12/12/1 -> FETCH_HEAD Note: checking out 'FETCH_HEAD'. > git branch * (detached from FETCH_HEAD) master

142 7. 변경사항리베이스, 재작업, 수정 ( 개발 ) 리뷰에따라소스수정 동일한 Change-Id 로커밋 다시리뷰제출 (git push 또는 git review 명령사용 ) > vi branch.txt ( 소스수정작업 ) > git add branch.txt 변경된소스리뷰요청 > git commit --amend ( 동일 Change-Id 유지하면서커밋 ) [review/_1/mytopic 48815e8] mytopic 2 revised 1 file changed, 1 insertion(+), 1 deletion(-) (-m option을사용시 Change ID가변경되므로유의 ) > git push origin HEAD:refs/for/master ( 리뷰제출 ) > git review f (git review 이용한리뷰제출및브랜치삭제 ) remote: Processing changes: updated: 1, refs: 1, done * [new branch] HEAD -> refs/publish/master/mytopic Switched to branch 'master' Deleted branch 'review/_1/mytopic' 새로운제출된패치셋

143 8. 변경 ID 폐기 ( 커미터 ) 변경에대한재작업을했음에도리뷰평가점수가기준에미달할경우변경내용을폐기 폐기된내용은목록 (Abandoned) 에남아있으므로다시복구가능 개발자는로컬저장소의커밋내용을취소 변경내용폐기 폐기된내용복구 > git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # (use "git push" to publish your local commits) > git reset --hard HEAD^

144 9. 변경 ID 제출 ( 커미터 ) 변경내용에평가점수가기준이상일경우변경내용을제출 프로젝트의변경제출옵션에따라중앙저장소에병합됨 Fast Forward Only Merge If Necessary Rebase If Necessary Always Merge Cherry Pick 변경제출옵션 변경내용제출

145 10. 변경 ID 병합 ( 커미터 ) Fast Forward Only 방식의병합 해당커밋이최신 HEAD 보다더최신일때만병합을허용 리뷰중에다른커밋이있을경우코드를병합하기위해서는 Rebase 를해야만함 C002 여기서 Rebase 를해야병합가능 C004 Review 브랜치 병합불가 C001 C003 C004 Master 브랜치

146 10. 변경 ID 병합 ( 커미터 ) Fast Forward Only 방식의병합 해당커밋이최신 HEAD 보다더최신일때만병합을허용 리뷰중에다른커밋이있을경우코드를병합하기위해서는 Rebase 를해야만함 (1) 개발자 1, C002 변경및리뷰제출 > vi branch.txt > git commit -a > git review (4) 병합불가 (2) 개발자 2, C003 변경및리뷰제출 > vi dev02.txt > git commit -a > git review (3) 리뷰어, C003 리뷰및병합 (4) C002 병합불가능 (5) 리뷰어, C002를 rebase (C004로이름변경 ) (6) 리뷰어, C004 리뷰및병합 (7) 개발자2, git pull (8) 개발자1, git fetch & git rebase (5) Rebase

147 10. 변경 ID 병합 ( 커미터 ) Merge If Necessary, Always Merge 해당커밋이최신 HEAD 보다더최신일때는 Fast Forward 병합수행 그렇지않은경우에는리뷰브랜치를포함한 Merge 시도 (Conflict Resolution 없다면 ) Review 브랜치 C002 브랜치 Merge C001 C003 C004 Master 브랜치

148 10. 변경 ID 병합 ( 커미터 ) Merge If Necessary, Always Merge 해당커밋이최신 HEAD 보다더최신일때는 Fast Forward 병합수행 그렇지않은경우에는리뷰브랜치를포함한 Merge 시도 (Conflict Resolution 없다면 ) (1) 개발자 1, C002 변경및리뷰제출 > vi branch.txt > git commit -a > git review (2) 개발자 2, C003 변경및리뷰제출 > vi dev02.txt ( 다른파일변경 ) > git commit -a > git review (3) 리뷰어, C003 리뷰및병합 (4) 리뷰어, C004 리뷰및병합 (Conflict 없음 ) (5) 개발자2, git pull (6) 개발자1, git pull

149 10. 변경 ID 병합 ( 커미터 ) Merge If Necessary, Always Merge 해당커밋이최신 HEAD 보다더최신일때는 Fast Forward 병합수행 그렇지않은경우에는리뷰브랜치를포함한 Merge 시도 (Conflict Resolution 없다면 ) (1) 개발자 1, C002 변경및리뷰제출 > vi branch.txt > git commit -a > git review (2) 개발자 2, C003 변경및리뷰제출 > vi branch.txt ( 동일한파일변경 ) > git commit -a > git review (3) 리뷰어, C003 리뷰및병합 (4) C002 병합불가능 (Conflict 발생 ) (5) 리뷰어, 리뷰중인변경 git fetch (6) 리뷰어, git rebase 및 merge > git rebase master > vi branch.txt (Conflict 해결 ) > git add branch.txt > git rebase --continue (7) 리뷰어, git review 리뷰제출 (8) 리뷰어, C004 리뷰및병합 (9) 개발자 2, git pull (10) 개발자 1, git fetch & git rebase

150 10. 변경 ID 병합 ( 커미터 ) Rebase If Necessary, Rebase Always 방식의병합 해당커밋이최신 HEAD 보다더최신일때는 Fast Forward 병합수행 그렇지않은경우에는 Rebase 시도 (Conflict Resolution 없다면 ) C002 Rebase C004 Review 브랜치 C001 C003 C004 Master 브랜치

151 10. 변경 ID 병합 ( 커미터 ) Rebase If Necessary, Rebase Always 방식의병합 해당커밋이최신 HEAD 보다더최신일때는 Fast Forward 병합수행 그렇지않은경우에는 Rebase 시도 (Conflict Resolution 없다면 ) (1) 개발자 1, C002 변경및리뷰제출 > vi branch.txt > git commit -a > git review (2) 개발자 2, C003 변경및리뷰제출 > vi dev02.txt ( 다른파일변경 ) > git commit -a > git review (3) 리뷰어, C003 리뷰및병합 (4) 리뷰어, C004 리뷰및병합 (Conflict 없음 ) (5) 개발자2, git pull (6) 개발자1, git pull

152 END OF DOCUMENT.

github_introduction.key

github_introduction.key Github/Git Starter Guide for Introductory Level Curtis Kim @ KAKAO Why Github/Git? - :, - - Q1 :? - Q2 :? - Q3 : ( )? - Q4 :? - Github/Git. Old Paradigm : - - a.java.. Git. - - - - - - - - - (commit &

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 1.About GIT 박재석대표 / 투씨드 1. About GIT History 2005 년리누스토발즈에의해 Linux 커널프로젝트지원을위해제작된버전관리도구 12 년간지속적인발전및꾸준한성장세 1. About GIT Concept 분산형버전관리시스템 Reverse Delta 방식이아닌변경에대한 Snapshot 방식 1. About GIT Architecture

More information

PowerPoint Presentation

PowerPoint Presentation GIT with Atlassian Git 을이용한형상관리 박재석 대표 투씨드 Agenda Why Git? HISTORY ABOUT GIT 2005 년리누스토발즈에의해 Linux 커널프로젝트지원을위해제작된버전관리도구 12 년간지속적인발전및꾸준한성장세 CONCEPT 분산형버전관리시스템 Reverse Delta 방식이아닌변경에대한 Snapshot 방식 ARCHITECTURE

More information

git CLI 로간단하게조작하기! by 윤선지

git CLI 로간단하게조작하기! by 윤선지 git CLI 로간단하게조작하기! by 윤선지 CLI? 명령어인터페이스 Command Line interface 텍스트터미널을통해사용자와컴퓨터가상호작용하는방식 편한 GUI 프로그램대신사용하는이유? 1. GUI프로그램보다가볍다. CJO경우보안프로그램이설치되어있어소스트리 GUI 실행을버거워한다. 2. CLI를사용할수있으면 GUI를사용하는것은쉽지만그반대는힘들다.

More information

슬라이드 1

슬라이드 1 Git 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 1.1 도구정보요약 도구명 소개 Git (http://git-scm.com/) 라이선스 리누스토발즈가만든분산형버전관리시스템 대부분의공개 SW 가 Git 을이용해서관리되고있음 General Public License v2 GitHub, BitBucket, GitLab 등웹기반의다양한소스저장소서비스의기반

More information

리눅스기초

리눅스기초 1 목차 Github 개요 Github 계정만들기 Github 저장소만들기 Github 저장소를이용한작업하기 팀구성하여공동작업하기 2 System Security Lab@Myongji Univ. GitHub github.com git 기반의공개 SW 호스팅사이트 웹사이트를통해팀프로젝트에필요한유용한기능을제공 소스코드, 커밋히스토리, 브랜치등을확인 이슈추적하기

More information

<3833C8A35FB0F8C7D05FC6AEB7BBB5E55F F466C6F77B8A65FC8B0BFEBC7D15FC8BFB0FAC0FBC0CE5FBCD2BDBA5FC7FCBBF35FB0FCB8AE5F F322E687770>

<3833C8A35FB0F8C7D05FC6AEB7BBB5E55F F466C6F77B8A65FC8B0BFEBC7D15FC8BFB0FAC0FBC0CE5FBCD2BDBA5FC7FCBBF35FB0FCB8AE5F F322E687770> 2014.2.10.[ 제 83 호 ] GIT Flow 를활용한효과적인소스형상관리 Part 2 : GIT Flow 실습과활용예제 소프트웨어공학센터경영지원 TF 팀 C o n t e n t s Ⅰ. GIT Flow 소개 Ⅱ. Branch 전략 Ⅲ. 실제사용예제 Ⅳ. 결론 SW 공학트렌드 동향분석 Webzine Ⅲ. 실제사용예제 1. GIT Flow 사용준비 GIT

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 오픈소스소프트웨어개발입문 (CP33992) 소스코드버전관리 부산대학교공과대학정보컴퓨터공학부 학습목표 소스코드에대한버전관리의개념과필요성을설명할수있다. git 을활용한버전관리방법을알수있다. 2 버전관리도구 버전관리도구 소프트웨어개발시팀단위로개발중인소스코드등디지털문서의관리에사용 파일의변화를시간에따라기록하여과거특정시점의버전을다시불러올수있는도구 특징및주요기능 소프트웨어개발시팀단위로개발중인소스코드등의디지털문서관리에사용

More information

슬라이드 1

슬라이드 1 EGit 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 1.1 도구정보요약 도구명소개특징주요기능 EGit (http://www.eclipse.org/egit/) Eclipse 용 Git 플러그인 라이선스 Eclipse Public License v1.0 Eclipse IDE 내에서 DVCS(Distributed Version Control

More information

svn 을능숙하게다루던능력자들처음 git 을만나면대게이런표정이죠.

svn 을능숙하게다루던능력자들처음 git 을만나면대게이런표정이죠. svn 능력자를위한 git 개념가이드 svn 을능숙하게다루던능력자들처음 git 을만나면대게이런표정이죠. 하지만곧이렇게됩니다. http://ggamangi.tistory.com 블로그의 < 민찬 > 어린이입니다. git 은 svn 과비슷해보이지만사실상당히다릅니다. 그래서막상덤벼보면아리송한게한두가지가아닙니다. 주위에서흔히볼수있는 git 가이드들은무척친절합니다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 1 Tizen 실습예제 : Remote Key Framework 시스템소프트웨어특론 (2014 년 2 학기 ) Sungkyunkwan University Contents 2 Motivation and Concept Requirements Design Implementation Virtual Input Device Driver 제작 Tizen Service 개발절차

More information

슬라이드 1

슬라이드 1 Subclipse 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 도구명 Subclipse (http://subclipse.tigris.org/) 라이선스 Eclipse Public License v1.0 소개 Subversion( 이하 svn) 용 Eclipse 플러그인 SVN 을만든 Tigris.org 에서만든클라이언트툴 Java

More information

슬라이드 1

슬라이드 1 GitHub @ Kyung Hee University KhuHub 가이드라인 Department of Computer Engineering, Kyung Hee University. Main Page 로그인 회원가입 프로젝트탐색 가이드라인 컴퓨터공학과홈페이지 2 Sign Up Convention [ 학생 ] 이름 : 홍길동 학번 (Username) : 2017000000

More information

SourceTree 를이용한 Git 사용법 1

SourceTree 를이용한 Git 사용법 1 SourceTree 를이용한 Git 사용법 1 GIT 설치방법 https://www.git-scm.com/downloads URL 로접속 à 다운로드클릭 à 설치 2 System Software & Security Lab@Myongji Univ. SourceTree 설치방법 (1) https://www.sourcetreeapp.com/ URL 로접속 à 다운로드클릭

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Deep Learning 작업환경조성 & 사용법 ISL 안재원 Ubuntu 설치 작업환경조성 접속방법 사용예시 2 - ISO file Download www.ubuntu.com Ubuntu 설치 3 - Make Booting USB Ubuntu 설치 http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/

More information

슬라이드 1

슬라이드 1 Software Verification #3 정적분석도구, 단위 / 시스템테스트도구 Software Verification Team 4 강 정 모 송 상 연 신 승 화 1 Software Verification #3 정적분석도구, 단위 / 시스템테스트도구 CONTENTS 01 Overall Structure 02 Static analyzer SonarQube

More information

슬라이드 1

슬라이드 1 TortoiseSVN 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 1.1 도구정보요약 도구명 Tortoise SVN (http://tortoisesvn.net) 라이선스 GNU GPL v2.0 소개 Subversion 를통해서소스버전관리를할수있게하는클라이언트도구 특징 Windows Explorer 에서곧바로 Subversion 를사용하여버전컨트롤가능

More information

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot) 1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다. 1.1. 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot) 만별도로필요한경우도있어툴체인설치및설정에대해알아봅니다. 1.1.1. 툴체인설치 다음링크에서다운받을수있습니다.

More information

Software Verification Team 오준 임국현 주영진 김슬기

Software Verification Team 오준 임국현 주영진 김슬기 Software Verification Team 2 200611490 오준 201011358 임국현 200913988 주영진 201011318 김슬기 Contents CTIP Mantis Additional info Q&A CTIP Continuous Test & Integration Platform CI 개념을바탕으로소스검토 ( 테스트및정적분석 ), 빌드,

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

슬라이드 1

슬라이드 1 Git 심화 l NIPA KOSSLab. Taeung Song taeung@kosslab.kr 26-09- Instructor 송태웅 (Taeung Song, https://github.com/taeung) - NIPA KOSS(Korean Open Source Software) Lab. Software Engineer - Linux Kernel 프로젝트 Contributor

More information

슬라이드 1

슬라이드 1 SW 개발도구연계 Jenkins - Redmine - Mylyn 목차 Intro Mylyn - Redmine 연계 Mylyn - Jenkins 연계및빌드실행 Mylyn에서 Redmine 일감처리 Intro 연계도구 웹기반의프로젝트관리도구 한글화가잘되어있어사용저변이넓음 플러그인을통해다양한도구와연계가능 Eclipse 용 ALM(Application Lifecycle

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

슬라이드 1

슬라이드 1 Gradle 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 1.1 도구정보요약 도구명 소개 특징 Gradle (http://www.gradle.org) 소프트웨어빌드자동화도구 라이선스 Apache License v2.0 Gradle 을통해소프트웨어패키지나프로젝트의빌드, 테스팅, 퍼블리슁, 배포등을자동화할수있다. Ant 의유연성과기능을

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

PowerPoint Presentation

PowerPoint Presentation Software Verification T4 고수창전소영이세라하지윤 Index 1 CI 2 IntelliJ IDEA 3 JUnit 4 Build Environment 5 Git 1 Continuous Integration What is CI? 소프트웨어개발에서 Build/Test 의프로세스를지속적으로수행하는것 개발자생산성향상 버그의빠른발견및해결 더빠른업데이트제공

More information

1) 인증서만들기 ssl]# cat >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

1) 인증서만들기 ssl]# cat   >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키 Lighttpd ( 멀티도메인 ) SSL 인증서신규설치가이드. [ 고객센터 ] 한국기업보안. 유서트기술팀 1) 인증서만들기 [root@localhost ssl]# cat www.ucert.co.kr.key www.ucert.co.kr.crt >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat

More information

1) 인증서만들기 ssl]# cat >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

1) 인증서만들기 ssl]# cat   >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키 Lighttpd ( 단일도메인 ) SSL 인증서신규설치가이드. [ 고객센터 ] 한국기업보안. 유서트기술팀 1) 인증서만들기 [root@localhost ssl]# cat www.ucert.co.kr.key www.ucert.co.kr.crt >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat

More information

<31332DB9E9C6AEB7A2C7D8C5B72D3131C0E528BACEB7CF292E687770>

<31332DB9E9C6AEB7A2C7D8C5B72D3131C0E528BACEB7CF292E687770> 보자. 이제 v4.6.2-1 로업데이트됐다. 그림 F-15의하단처럼 msfupdate를입력해 root @bt:~# msfudpate 그림 F-16 과같이정상적으로업데이트가진행되는것을볼수있다. 이후에는 msfupdate를입력하면최신업데이트모듈과공격코드를쉽게유지할수있다. 그림 F-16 msfupdate의진행확인 G. SET 업데이트문제해결 백트랙을기본설치로운영을할때에는

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture3-2 Malware Analysis #3-2 Agenda 안드로이드악성코드분석 악성코드분석 안드로이드악성코드정적분석 APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages v0nui-macbook-pro-2:lecture3 v0n$

More information

Introduction to Junit, Eclipse, Build Environment

Introduction to  Junit, Eclipse, Build Environment Introduction to Mantis, SVN & CTIP 200611494 원스타 200810047 김성원 200811466 허태경 Index 1. CTIP 1. Junit 연동및 Mail 보고 2. SVN 3. Mantis 1. Source Integration 4. Trouble Shooting 1. CTIP Continuous Test & Integration

More information

슬라이드 1

슬라이드 1 모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예

More information

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1 표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1 Index 1. 표준프레임워크 EGOVCI 팩키지설치... 3 1.1 개요... 3 1.2 EGOVCI 압축풀기... 3 1.3 EGOVCI 시스템구성... 3 1.4 CI 시스템구동 (START/STOP)... 4 2. NEXUS 설정정보... 6 2.1 NEXUS 서버구동

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 사용자계정관리 운영체제실습 목차 Ⅲ. 사용자계정관리 4.1 사용자계정관리 4.2 그룹관리 4.3 사용자계정관련파일 4.4 패스워드관리 4.5 사용자신분확인 4.1 사용자계정관리 사용자생성관련명령어 사용자생성 : useradd / adduser 사용자삭제 : userdel 사용자정보변경 : usermod 패스워드설정및변경 : passwd 그룹생성관련명령어 group

More information

System Recovery 사용자 매뉴얼

System Recovery 사용자 매뉴얼 Samsung OS Recovery Solution 을이용하여간편하게 MagicInfo 의네트워크를설정하고시스템을백업및복원할수있습니다. 시스템시작시리모컨의 - 버튼이나키보드의 F3 키를연속해서누르면복구모드로진입한후 Samsung OS Recovery Solution 이실행됩니다. Samsung OS Recovery Solution 은키보드와리모컨을사용하여조작할수있습니다.

More information

소프트웨어 검증 및 설계

소프트웨어 검증 및 설계 1 : 2018-03-21 Junit & IntelliJ 및빌드환경 Software Verification T1 [2018SV][T1] 201311263 김민환 201311308 전세진 201411278 서희진 201411317 조민규 1 INDEX 1. 2. 3. IDE IntelliJ Unit Test JUnit Build Configuration & CI

More information

<3836C8A35FB0F8C7D05FC6AEB7BBB5E55F F466C6F77B8A65FC8B0BFEBC7D15FC8BFB0FAC0FBC0CE5FBCD2BDBA5FC7FCBBF35FB0FCB8AE5F F332E687770>

<3836C8A35FB0F8C7D05FC6AEB7BBB5E55F F466C6F77B8A65FC8B0BFEBC7D15FC8BFB0FAC0FBC0CE5FBCD2BDBA5FC7FCBBF35FB0FCB8AE5F F332E687770> 2014.3.00.[ 제 00 호 ] GIT Flow 를활용한효과적인소스형상관리 Part 3 : Source Tree 를이용한 GIT Flow 실습 소프트웨어공학센터경영지원 TF 팀 C o n t e n t s Ⅰ. 설치 Ⅱ. 예제를이용한 Source Tree / GIT Flow 적응 Ⅲ. 버전단위로보기 SW 동향분석 Webzine 그동안터미널 (Terminal)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 공개 SW 솔루션설치 & 활용가이드 응용 SW > 협업관리 제대로배워보자 How to Use Open Source Software Open Source Software Installation & Application Guide CONTENTS 1. 개요 2. 기능요약 3. 실행환경 4. 설치및실행 5. 기능소개 6. 활용예제 7. FAQ 8. 용어정리 - 3-1.

More information

슬라이드 1

슬라이드 1 전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new

More information

슬라이드 1

슬라이드 1 Continuous Integration Part 2 Continuous Integration Servers 조영호카페PJT팀 2008.09.01 youngho.cho@nhncorp.com 목차 1. Continuous Integration Servers 2. CruiseControl 3. Bamboo 1. Continuous Integration Severs

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

LXR 설치 및 사용법.doc

LXR 설치 및 사용법.doc Installation of LXR (Linux Cross-Reference) for Source Code Reference Code Reference LXR : 2002512( ), : 1/1 1 3 2 LXR 3 21 LXR 3 22 LXR 221 LXR 3 222 LXR 3 3 23 LXR lxrconf 4 24 241 httpdconf 6 242 htaccess

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

Remote UI Guide

Remote UI Guide Remote UI KOR Remote UI Remote UI PDF Adobe Reader/Adobe Acrobat Reader. Adobe Reader/Adobe Acrobat Reader Adobe Systems Incorporated.. Canon. Remote UI GIF Adobe Systems Incorporated Photoshop. ..........................................................

More information

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O Orange for ORACLE V4.0 Installation Guide ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE...1 1....2 1.1...2 1.2...2 1.2.1...2 1.2.2 (Online Upgrade)...11 1.3 ORANGE CONFIGURATION ADMIN...12 1.3.1 Orange Configuration

More information

문서의 제목 나눔고딕B, 54pt

문서의 제목 나눔고딕B, 54pt Subversion 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 1.1 도구정보요약 도구명 Subversion (http://subversion.apache.org/) 라이선스 Apache License v2.0 소개 특징 주요기능 CVS의단점을보완하여작성된중앙집중형방식의형상관리도구 파일이나디렉터리를이동해도이력보존 gzip 압축을통한저장공간절약

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

SAS9.2_SAS_Enterprise_Miner_install_guide_single_user_v2

SAS9.2_SAS_Enterprise_Miner_install_guide_single_user_v2 [Win] SAS Enterprise Miner6.1 설치가이드 - Single User 작성자 : 기술지원팀 (SAS Korea) 단계 1) 설치전주의 / 확인사항 2) 사용자생성및권한할당 3) SAS Software Deport 생성 4) SAS Enterprise Miner 설치 (SAS Foundation + Enterprise Miner 6.1) 5)

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5] The Asian Journal of TEX, Volume 3, No. 1, June 2009 Article revision 2009/5/7 KTS THE KOREAN TEX SOCIETY SINCE 2007 2008 ko.tex Installing TEX Live 2008 and ko.tex under Ubuntu Linux Kihwang Lee * kihwang.lee@ktug.or.kr

More information

PowerPoint Presentation

PowerPoint Presentation Hyperledger Fabric 개발환경구축및예제 Intelligent Networking Lab Outline 2/64 개발환경구축 1. Docker installation 2. Golang installation 3. Node.Js installation(lts) 4. Git besh installation 예제 1. Building My First Network

More information

EndNote X2 초급 분당차병원도서실사서최근영 ( )

EndNote X2 초급 분당차병원도서실사서최근영 ( ) EndNote X2 초급 2008. 9. 25. 사서최근영 (031-780-5040) EndNote Thomson ISI Research Soft의 bibliographic management Software 2008년 9월현재 X2 Version 사용 참고문헌 (Reference), Image, Fulltext File 등 DB 구축 참고문헌 (Reference),

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

Install stm32cubemx and st-link utility

Install stm32cubemx and st-link utility STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7

More information

Microsoft PowerPoint - 08_(Linux)_(Fundamental)_Version_Control_Systems

Microsoft PowerPoint - 08_(Linux)_(Fundamental)_Version_Control_Systems GNU/Linux 버전관리시스템 (Version Control Systems) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 버전관리시스템 Git 원격저장소 2 버전관리시스템 버전관리시스템 로컬버전관리시스템 중앙집중식버전관리시스템 분산버전관리시스템 Git 원격저장소 3 버전관리시스템 (1/4) 버전관리 (version

More information

YUM(Yellowdog Updater,Modified) : RPM 패키지가저장된서버 ( 저장소 ) 로부터원하는패키지를자동으로설치한다. : YUM 도구는 RPM 의패키지의존성문제를해결

YUM(Yellowdog Updater,Modified) : RPM 패키지가저장된서버 ( 저장소 ) 로부터원하는패키지를자동으로설치한다. : YUM 도구는 RPM 의패키지의존성문제를해결 YUM(Yellowdog Updater,Modified) : RPM 패키지가저장된서버 ( 저장소 ) 로부터원하는패키지를자동으로설치한다. : YUM 도구는 RPM 의패키지의존성문제를해결해주어 RPM 패키지설치시자동적으로의존성문제를 처리하여 RPM 패키지를안전하게설치, 제거, 업그레이드등의작업을스스로하는도구 YUM 설정 (/etc/yum.conf) [main]

More information

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D> VHDL 프로그래밍 D. 논리합성및 Xilinx ISE 툴사용법 학습목표 Xilinx ISE Tool 을이용하여 Xilinx 사에서지원하는해당 FPGA Board 에맞는논리합성과정을숙지 논리합성이가능한코드와그렇지않은코드를구분 Xilinx Block Memory Generator를이용한 RAM/ ROM 생성하는과정을숙지 2/31 Content Xilinx ISE

More information

UNIST_교원 홈페이지 관리자_Manual_V1.0

UNIST_교원 홈페이지 관리자_Manual_V1.0 Manual created by metapresso V 1.0 3Fl, Dongin Bldg, 246-3 Nonhyun-dong, Kangnam-gu, Seoul, Korea, 135-889 Tel: (02)518-7770 / Fax: (02)547-7739 / Mail: contact@metabrain.com / http://www.metabrain.com

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder Embian efolder 설치가이드 efolder 시스템구성 efolder 설치순서 Installation commands 1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 12. 4. 6, Presentation #2 CM Tools & RE Tools 200511318 김희재 T2 200511326 박현진 200711436 서영주 200913987 이승효 Contents 1. CM Tools Configuration Management CVS - CVSNT SVN - Subclipse Github 2. RE Tools Requirement

More information

사용자계정관리 1. 사용자계정관리 사용자 (user), 그룹 (group) u 다중사용자시스템 (Multi-User System) - 1 대의시스템을동시에여러사람이접속하여쓸수있게하는시스템 u 사용자 (user) - 시스템관리자 : root (=Super user) -

사용자계정관리 1. 사용자계정관리 사용자 (user), 그룹 (group) u 다중사용자시스템 (Multi-User System) - 1 대의시스템을동시에여러사람이접속하여쓸수있게하는시스템 u 사용자 (user) - 시스템관리자 : root (=Super user) - 운영체제실습 사용자계정관리 2017. 6 표월성 wspyo74@naver.com cherub.sungkyul.ac.kr 목차 Ⅰ. 사용자계정관리 1. 사용자계정관리 2. 그룹관리 3. 사용자계정관련파일 4. 패스워드관리 5. 사용자신분확인 사용자계정관리 1. 사용자계정관리 사용자 (user), 그룹 (group) u 다중사용자시스템 (Multi-User System)

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

Title Layout

Title Layout 2018 년 10 월 최영락 (E-mail: ianyrchoi@gmail.com) 목차 볼만한자료들 Git는무엇일까? GitHub는무엇일까? Git와 GitHub, 그리고오픈소스 2 볼만한자료들 (1) 사실, git 와관련된좋은책도많고, 인터넷에좋은자료들도많습니다. 몇가지책 ( 검색 / 간단히만살펴본것입니다 ) 이미지출처 : yes24.com, 한빛미디어 (

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 2018 SOFTWARE VERIFICATION CTIP Version Control, Issue Management, Requirement Coverage 201311263 김민환 201311308 전세진 201411278 서희진 201411317 조민규 1 CTIP 2018 SOFTWARE VERIFICATION Version Control Issue Management

More information

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University Outline Network Network 구조 Source-to-Destination 간 packet 전달과정 Packet Capturing Packet Capture 의원리 Data Link Layer 의동작 Wired LAN Environment

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

Chapter 05. 파일접근권한관리하기

Chapter 05. 파일접근권한관리하기 Chapter 05. 파일접근권한관리하기 00. 개요 01. 파일의속성 02. 파일의접근권한 03. 기호를이용한파일접근권한변경 04. 숫자를이용한파일접근권한변경 05. 기본접근권한설정 06. 특수접근권한 파일의속성을이해하고설명할수있다. 접근권한의종류와표기방법을이해하고설명할수있다. 접근권한을바꾸기위해기호모드에서원하는권한을기호로표기할수있다. 접근권한을바꾸기위해숫자모드에서원하는권한을숫자로표기할수있다.

More information

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아 LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml

More information

Dropbox Forensics

Dropbox Forensics Cloud Storage Forensics Part I : Dropbox 2013. 09. 28 forensic.n0fate.com Dropbox Forensics Dropbox Forensics Dropbox 웹기반파일공유서비스 총 12 개의클라이언트지원 Desktop : Windows, Mac OS X, Linux Mobile : ios, Android,

More information

GIT/GITHUB 사용 1 Git & GitHub 튜토리얼 출처 : [Studio Rini ] Git 을보통어떻게사용하는지간략한 Flow 를보겠습니다. 1. 새프로젝트를생성, 프로젝트폴더에 g

GIT/GITHUB 사용 1 Git & GitHub 튜토리얼 출처 :   [Studio Rini ] Git 을보통어떻게사용하는지간략한 Flow 를보겠습니다. 1. 새프로젝트를생성, 프로젝트폴더에 g 1 Git & GitHub 튜토리얼 출처 : http://riniblog.egloos.com/viewer/1024993 [Studio Rini ] Git 을보통어떻게사용하는지간략한 Flow 를보겠습니다. 1. 새프로젝트를생성, 프로젝트폴더에 git 을설정한다. 2. 개발한다. 개발중간중간에개발한내용을 commit 한다. 3. 버전 1 을완성한다. 4. 새기능을넣는사람들은

More information

초보자를 위한 분산 캐시 활용 전략

초보자를 위한 분산 캐시 활용 전략 초보자를위한분산캐시활용전략 강대명 charsyam@naver.com 우리가꿈꾸는서비스 우리가꿈꾸는서비스 우리가꿈꾸는서비스 우리가꿈꾸는서비스 그러나현실은? 서비스에필요한것은? 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 적절한기능 서비스안정성 트위터에매일고래만보이면? 트위터에매일고래만보이면?

More information

Google Maps Android API v2

Google Maps Android API v2 Google Maps API 3 조 20080388 김현철 20080748 양태욱 20091493 김이현 Google Maps? 구글에서제공하는지도서비스 걷기, 차량두가지길찾기기능제공 최근, Open API 로현지대중교통과연동하여사용 Google Maps API? 개발자에게 Google Maps 를삽입할수있도록 Google 에서제공하는 Application

More information

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java(  혹은   에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을 안드로이드설치및첫번째예제 안드로이드설치 안드로이드개발킷은안드로이드개발자사이트 (http://developer.android.com/) 에서다운로드받을수있으며현재 1.5 버전으로윈도우즈, 맥 OS X( 인텔 ), 리눅스플랫폼패키지가링크되어져있다. 안드로이드개발킷을설치하기위해서는다음과같은시스템환경이갖추어져있어야한다. 플랫폼 Windows Mac Linux 지원환경

More information

Open Cloud Engine Open Source Big Data Platform Flamingo Project Open Cloud Engine Flamingo Project Leader 김병곤

Open Cloud Engine Open Source Big Data Platform Flamingo Project Open Cloud Engine Flamingo Project Leader 김병곤 Open Cloud Engine Open Source Big Data Platform Flamingo Project Open Cloud Engine Flamingo Project Leader 김병곤 (byounggon.kim@opence.org) 빅데이터분석및서비스플랫폼 모바일 Browser 인포메이션카탈로그 Search 인포메이션유형 보안등급 생성주기 형식

More information

Microsoft PowerPoint - [Practice #1] APM InstalI.ppt

Microsoft PowerPoint - [Practice #1] APM InstalI.ppt Practice #1 APM Install 2005. 8. 31 Lee Seung-Bok http://hpclab.uos.ac.kr Contents 2 APM 소개 Apache 설치 PHP 설치 MySQL 설치기타사항 Q & A APM(Apache,, PHP, MySQL) 소개 3 Apache PHP 현재전세계에서가장보편적으로사용되고있는오픈소스웹서버안정성및우수한기능

More information

PowerPoint Presentation

PowerPoint Presentation Mantis, SVN & CTIP Team 2 200910793 임민우 200911388 박미관 200911412 이영준 2014 Software Verification 2014.04.18 Index Mantis SVN CTIP 2 Mantis 3 Mantis_what is Mantis? Bug Tracking System 오픈소스 APM 환경기반 4 Mantis_Advantage

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할 Xcode4 부록 A Xcode 4.1에서 바뀐 내용 이번 장에서는 맥 OSX 10.7 라이언과 함께 발표된 Xcode 4.1에서 새롭게 추가된 기 능과 변경된 기능을 정리하려고 한다. 우선 가장 먼저 알아둬야 할 사항은 ios 개발을 위한 기본 컴파일러가 LLVM- GCC 4.2로 바뀌었다는 점이다. LLVM-GCC 4.2 컴파일러는 Xcode 4.0의 기본

More information

슬라이드 1

슬라이드 1 NeoDeveloper 설치가이드 차례 1. 환경 3 2. 설치 3 2.1 웹서버설치 3 Tomcat 7 3 JDK 1.6 3 2.2 NeoDeveloper 설치 3 Neo Developer 서버구성 3 Demo용 User Application 구성 4 Neo Developer 서버 Data File 4 Client 개발 Tool 설치 4 3. 설정 5 3.1

More information

슬라이드 1

슬라이드 1 - 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

Cloud Friendly System Architecture

Cloud Friendly System Architecture -Service Clients Administrator 1. -Service 구성도 : ( 좌측참고 ) LB(LoadBlancer) 2. -Service 개요 ucloud Virtual Router F/W Monitoring 개념 특징 적용가능분야 Server, WAS, DB 로구성되어 web service 를클라우드환경에서제공하기위한 service architecture

More information

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다. PDMLink 에등록된 Office 문서들의 PDF 문서변환기능및 Viewer 기능을알아보자 PDM Link에서지원하는 [Product View Document Support] 기능은 Windows-Base 기반의 Microsoft Office 문서들을 PDMLink용 Viewer인 Product View를통한읽기가가능한 PDF Format 으로변환하는기능이다.

More information

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : ios 3.0 이상 - 콘텐츠형식 : MP4 (H264,AAC ), MP3 * 디바이스별해상도,

More information

01Àå

01Àå CHAPTER 01 1 Fedora Fedora Linux Toolbox 2003 Fedora Core( ) http://fedoraproject.org www.redhat.com 2 CHAPTER Fedora RHEL GNU public license www.centos.org www.yellowdoglinux.com www. lineox.net www.

More information

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E > 6. ASP.NET ASP.NET 소개 ASP.NET 페이지및응용프로그램구조 Server Controls 데이터베이스와연동 8 장. 데이터베이스응용개발 (Page 20) 6.1 ASP.NET 소개 ASP.NET 동적웹응용프로그램을개발하기위한 MS 의웹기술 현재 ASP.NET 4.5까지출시.Net Framework 4.5 에포함 Visual Studio 2012

More information

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 BOOTLOADER Jo, Heeseung 부트로더컴파일 부트로더소스복사및압축해제 부트로더소스는웹페이지에서다운로드 /working 디렉터리로이동한후, wget으로다운로드 이후작업은모두 /working 디렉터리에서진행 root@ubuntu:# cp /media/sm5-linux-111031/source/platform/uboot-s4210.tar.bz2 /working

More information

초보자를 위한 C++

초보자를 위한 C++ C++. 24,,,,, C++ C++.,..,., ( ). /. ( 4 ) ( ).. C++., C++ C++. C++., 24 C++. C? C++ C C, C++ (Stroustrup) C++, C C++. C. C 24.,. C. C+ +?. X C++.. COBOL COBOL COBOL., C++. Java C# C++, C++. C++. Java C#

More information

Apache Ivy

Apache Ivy JBoss User Group The Agile Dependency Manager 김병곤 fharenheit@gmail.com 20100911 v1.0 소개 JBoss User Group 대표 통신사에서분산컴퓨팅기반개인화시스템구축 Process Designer ETL, Input/Output, Mining Algorithm, 통계 Apache Hadoop/Pig/HBase/Cassandra

More information

DE1-SoC Board

DE1-SoC Board 실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically

More information

문서의 제목 나눔고딕B, 54pt

문서의 제목 나눔고딕B, 54pt Software Verification Introduction to Software Testing & Static Analysis 2조이상혁왕홍강김태영 2016-03-18 1.1 Overview 2 / 87 Overview 1.1 Overview 3 / 87 Overview 1.2 Install JDK 4 / 87 Install JDK JDK 8 다운로드페이지

More information

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 (https://www.kisarbl.or.kr) < 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 Ⅰ. 개요 실시간스팸차단리스트 (RBL) 는메일서버를운영하는누구나손쉽게효과적으로스팸수신을차단하는데이용할수있도록한국인터넷진흥원 (KISA)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 05. 파일접근권한관리하기 00. 개요 01. 파일의속성 02. 파일의접근권한 03. 기호를이용한파일접근권한변경 04. 숫자를이용한파일접근권한변경 05. 기본접근권한설정 06. 특수접근권한 파일의속성을이해하고설명할수있다. 접근권한의종류와표기방법을이해하고설명할수있다. 접근권한을바꾸기위해기호모드에서원하는권한을기호로표기할수있다. 접근권한을바꾸기위해숫자모드에서원하는권한을숫자로표기할수있다.

More information

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용 Oracle hacking 작성자 : 임동현 (ddongsbrk@naver.com) 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용 Skill List 1. Oracle For Pentest 1. Find TNS Listener (Default 1521 port) (with nmap or amap) 2. Get the

More information