본문 바로가기

Programming

Git commit convention, 깃 커밋 컨벤션, How to commit, 커밋 메시지 포맷, Angular JS git commit message conventions

gist.github.com/stephenparish/9941e89d80e2bc58a153

 

AngularJS Git Commit Message Conventions

AngularJS Git Commit Message Conventions. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

Git commit 시에 메시지에 대한 컨벤션

Git commit convention

 

 

참고하는 방법으로,

 

1. 커밋 메시지 포맷을 본다.

2. Subject line 에서 type에 들어가는 것들을 본다.

3. Subject line 에서 scope에 들어가는 것들을 본다.

4. Message body에 들어가는 내용을 확인한다.

5. Message footer에 들어가는 내용을 확인한다.

6. 아래 예제를 확인하며 실상황에 대입해본다.

 

====================================================


3가지의 section이 changelog에 있다.
-  new features
-  bug fixes
-  breaking changes

* 릴리즈 할 때, 
List of all subjects (first lines in commit message) since last release:
git log <last tag> HEAD --pretty=format:%s
New features in this release
git log <last release> HEAD --grep feature

* 중요하지 않은 것은 skip 할 수 있다.
When bisecting, you can ignore these by:
git bisect skip $(git rev-list --grep irrelevant <good place> HEAD)

Provide more information when browsing the history
* 히스토리를 찾아볼 때, 더 많은 정보를 제공한다.
* 내부를 자세하게 설명하면서 + Convention을 만들어서 커밋하면 나중에 보고, 찾기 쉽다.

 

===================================================

 

------------------------------------------------------

Format of the commit message
커밋 메시지의 포맷

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

------------------------------------------------------

 

## Subject line
Subject line contains succinct description of the change.

- Allowed <type>
feat (feature)
fix (bug fix)
docs (documentation)
style (formatting, missing semi colons, …)
refactor
test (when adding missing tests)
chore (maintain)

- Allowed <scope>

Scope could be anything specifying place of the commit change. 
For example 
$location, 
$browser
$compile
$rootScope
ngHref
ngClick
ngView
etc...

- <subject> text
use imperative, present tense: “change” not “changed” nor “changes”
don't capitalize first letter
no dot (.) at the end

------------------------------------------------------

## Message body
- just as in use imperative, present tense: “change” not “changed” nor “changes”
- includes motivation for the change and contrasts with previous behavior

------------------------------------------------------

 

## Message footer
Breaking changes
All breaking changes have to be mentioned in footer with the description of the change, 
justification and migration notes


## 고쳐진 버그 닫는다.
Referencing issues
- Closed bugs should be listed on a separate line in the footer prefixed with "Closes" keyword like this:
Closes #234
- or in case of multiple issues:
Closes #123, #245, #992

---------------------------------------------------------------
## 예시 (Example)
Examples
---------------------------------------------------------------

 

feat($browser): onUrlChange event (popstate/hashchange/polling)

Added new event to $browser:
- forward popstate event if available
- forward hashchange event if popstate not available
- do polling when neither popstate nor hashchange available

Breaks $browser.onHashChange, which was removed (use onUrlChange instead)

---------------------------------------------------------------

fix($compile): couple of unit tests for IE9

Older IEs serialize html uppercased, but IE9 does not...
Would be better to expect case insensitive, unfortunately jasmine does
not allow to user regexps for throw expectations.

 

Closes #392
Breaks foo.bar api, foo.baz should be used instead

 

---------------------------------------------------------------

feat(directive): ng:disabled, ng:checked, ng:multiple, ng:readonly, ng:selected

New directives for proper binding these attributes in older browsers (IE).
Added coresponding description, live examples and e2e tests.

Closes #351

---------------------------------------------------------------

style($location): add couple of missing semi colons

---------------------------------------------------------------

docs(guide): updated fixed docs from Google Docs

Couple of typos fixed:
- indentation
- batchLogbatchLog -> batchLog
- start periodic checking
- missing brace

---------------------------------------------------------------

feat($compile): simplify isolate scope bindings

Changed the isolate scope binding options to:
  - @attr - attribute binding (including interpolation)
  - =model - by-directional model binding
  - &expr - expression execution binding

This change simplifies the terminology as well as
number of choices available to the developer. It
also supports local name aliasing from the parent.

BREAKING CHANGE: isolate scope bindings definition has changed and
the inject option for the directive controller injection was removed.

To migrate the code follow the example below:

Before:

scope: {
  myAttr: 'attribute',
  myBind: 'bind',
  myExpression: 'expression',
  myEval: 'evaluate',
  myAccessor: 'accessor'
}

After:

scope: {
  myAttr: '@',
  myBind: '@',
  myExpression: '&',
  // myEval - usually not useful, but in cases where the expression is assignable, you can use '='
  myAccessor: '=' // in directive's template change myAccessor() to myAccessor
}

The removed `inject` wasn't generaly useful for directives so there should be no code using it.