페이지 선택

프로그램을 개발할 때 자신의 코드나 사용하고 있는 일부 라이브러리를 수정하게 되는 경우가 있다.

본 장에서는 로컬저장소의 변경 사항을 원격저장소에 적용하는 방법에 대해 설명한다. .

 

 

1. 로컬저장소/프로젝트의 상태 체크하기

로컬저장소/프로젝트에서 아직 커밋(commit)되지 않은 모든 변경 사항들을 확인할 수 있다.  → 아래의 명령을 사용

프로젝트 루트디렉터리> mxos status 

$ mico status

[mxos] Status for “helloworld”:

M helloworld/helloworld.c

[mxos] Status for “mxos-os”:

M platform/MCU/STM32F4xx/platform_init.c

 

 

⊕ 이상에서 2개의 변경된  사항들은 커밋(commit)하거나 버릴 수 있다.

 

 

2. 로컬저장소/프로젝트의 의존성 체크하기 

로컬저장소/프로젝트의 의존성(dependency)관계를 확인 해 볼 수 있다. → 아래의 명령을 사용

프로젝트 루트디렉터리> mxos ls

$ mxos ls

my-mxos-os-example (a5ac4bf2e468)

|- mxos-os (5fea6e69ec1a)

`- my-libs (e39199afa2da)

|- my-libs/iot-client (571cfef17dd0)

`- my-libs/test-framework (cd18b5a50df4)

 

 

 

3. 게시하기(publish)의 동작 방식

 프로젝트의 의존성을 mxos ls 명령으로 확인한 결과 앞 절에서 와 같고, iot-client가 변경되었다고 가정한다.

이와 같은 상황에서 게시하기(publish)는 다음과 같이 동작한다.

 

step1. 게시하기 명령은 리프(leaf)인 iot-client 의존성(dependency)에 대한 변경을 검출하고 커밋할 것을 요청한다.

step2.  게시를 한다면 my-libs가 iot-clinet에 대해 의존성이 있음을 검출하여 iot-client.component 파일을 업데이트 함으로써,

            my-libs의 의존성을 최신 버전으로 업데이트 하고 이를 커밋할 것을 요청한다.

step3. 이와 같은 과정은 my-mxos-os-exmaple까지 재귀적으로 수행된다. ,

 

 

4.  로컬프로젝트 또는 컴포넌트 게시(Publish)하기

버전관리가 되고 있는 로컬(local repository)에 새로운 프로젝트나 컴포넌트를 만들게 되면 그 개정 내역은 로컬에만 존재하게 된다.

이를 원격 저장소와 동기를 맞추려면 로컬저장소로부터 원격저장소에 게시(publish)를 해야 할 것이다.

게시를 하기 위해서는 다음 단계를 따른다.

 

 

step1. 원격서버에 신규저장소/원격저장소(repository)를 만든다.

⊕ 원격저장소: 호스팅서비스(GitHub, Bitbucke, code.aliyun)의 저장소, 자체서비스의 저장소, 또는 시스템의 다른 위치에 있는 로컬저장소일 수도 있다.

 

Step2. windows cmd 창에서 현재의 경로를 로컬저장소에 있는 프로젝트의 디렉터리로 변경한다.

ex) 경로를 /mico-os-example/local-lib로 변경한다.

 

Step3. 로컬저장소를 원격저장소와 결합한다(관련성을 만든다).  → 아래의 명령을 사용한다.

/mico-os-example/local-lib> git remote add origin <url-or-paht-to-your-remote-repo>

⊕ <url-or-paht-to-your-remote-repo> : 신규로 만든 원격저장소의 URL

 

Step4. 다음 명령을 실행하여 변경 사항을 게시한다.

/mico-os-example/local-lib>mxos publish

 

⊕ 중첩(nested) 되어있는 로컬저장소의 경우에는 먼저 리프(leaf)저장소부터 시작한다.

 

 

♠ Forking workflow

Git은 비대칭 워크플로(workflow)을 지원한다, 즉 게시(publis/push)한 원격저장소가 원본저장소와 다르게 할 수 있다는 것이다.

이를 통해 새 개정판을 원본저장소와 연결/연관성/동기를 유지한 채로 포크/파생 저장소(fork repository)에 배치 할 수 있게 된다.

이와 같은 기능을 하기 위해,

먼저 mxos OS 프로젝트, 컴포넌트 또는 mxos OS 자체를 가져오기 한 다음 게시 원격저장소와 너의 포크저장소를 링크 시킨다. → 아래의 명령을 사용

 

$ git remote set-url –push origin https://github.com/screamerbg/repo-fork.git

 

git 커밋(commit) 과 게시하기(push) 또는 mxos 게시하기(publish)를 사용하여 새 버전을 파생된 저장소에 게시할 수 있다.

또한  git pull 또는 mico update 명령을 사용해 새로운 버전을 원본저장소로부터 가져오기를 할 수도 있다.

파생저장소로 부터 명시적으로 당겨오기(pull)를 하려면 다음 명령을 사용할 수 있다.

 

$ git pull https://github.com/screamerbg/repo-fork [branch]

 

위에서 설명한 절차를 통해,

mxos Cube는 원본저장소와 파생저장소 간에 링크를 유지하며, 파생저장소(fork)로 게시한 수정해시(revision hash)의 참조(references)를 기록한다.

파생저장소에서 발생한 Pull Request가 원본저장소에서 승인되기 전까지는 모든 수정해시(revision hash)는 유효하지 않다.

Pull Request가 수락 되면 파생저장소의 버전이 원본저장소의 일부가 되고 그때야 비로서 링크가 유효해진다.

 

Viewed Page List