diff --git a/vn/git/.github/BRANCH_NAMING.md b/vn/git/.github/BRANCH_NAMING.md new file mode 100644 index 0000000..a0961a4 --- /dev/null +++ b/vn/git/.github/BRANCH_NAMING.md @@ -0,0 +1,33 @@ +# Quy tắc đặt tên nhánh GIT + +## Branch naming: + +* Tên nhánh cho release production: [master] + +* Tên nhánh cho release staging: [staging] + +* Tên nhánh cho release development: [develop] + +* Tên nhánh làm việc: [feature] + +* Tên nhánh Hotfix: [hotfix] + +* Tên nhánh sửa lỗi: [bug] + +* Tên nhánh hỗ trợ: [support] + +## Naming Convention + +### Template: + +{type}/{ticket number / name / indicator}/{max 5 words description} + +#### Ví dụ: + +feature_123456_user_profile_images_update + +hotfix_98765_menu_padding + +support_6457_header_banner_width_fix + +bug_235235_fix_column_not_change diff --git a/vn/git/.github/GIT_COMMIT_MESSAGE.md b/vn/git/.github/GIT_COMMIT_MESSAGE.md new file mode 100644 index 0000000..a8d89df --- /dev/null +++ b/vn/git/.github/GIT_COMMIT_MESSAGE.md @@ -0,0 +1,113 @@ +# Nguyên tắc viết commit message +Format như sau : +``` +Dòng 1: thông tin cơ bản về nội dung thay đổi ( title, tóm tắt, ... ) +Dòng 2 (Nếu có): khoảng trắng +Dòng 3 trở đi (Nếu có): Lý do thay đổi, nội dung thay đổi cụ thể, ... +``` + +Tiếng Anh, tiếng Nhật đều được, nhưng 1 project thì dùng thống nhất 1 ngôn ngữ thôi. Và không dùng tiếng Việt. + +## Dòng 1 + +Format như sau : + +`[phân loại] tóm tắt` + +### Phân loại +Có nhiều loại thao tác đối với code, và tương ứng với nó sẽ là 1 phân loại cụ thể. Vấn đề là có ... hơi nhiều phân loại :D. + +#### Phân loại thông thường +* Fix : sửa bugs +* Hotfix : sửa những bugs khẩn cấp +* Add : thêm file, thêm chức năng +* Modify : sửa, thay đổi tính năng ( không phải bug nhé ) +* Change : thay đổi requirement +* Clean : chỉnh sửa, dọn dẹp code +* Disable : vô hiệu hoá ( ví dụ như comment out ) +* Remove : xoá file +* Upgrade : nâng cấp +* Revert : chữa cháy lại những thứ vừa thay đổi + +#### Phiên bản đơn giản +Số lượng phân loại trên thực sự là quá nhiều và phức tạp, do đó để đơn giản hoá vấn đề, ta sẽ đưa ra 1 cách phân loại khác nhẹ nhàng hơn. +* Fix : fix bugs +* Add : thêm chức năng, tính năng mới +* Modify : sửa, nâng cấp tính năng ( không phải bugs ) +* Remove : xoá ( file ) +* Revert : chữa cháy + +#### Sử dụng linh hoạt +Phần phân loại này tuỳ theo từng dự án mà phân loại cho phù hợp, không nhất thiết phải sử dụng những định nghĩa trên. + +Ví dụ với dự án có frontend, backend, payment, ... thì có thể phân loại dựa theo chức năng. + +Tuy nhiên, cần phải định nghĩa chung cách phân loại từ đầu mỗi dự án để tất cả mọi người cùng tuân theo. + +### Phần nội dung title +`Động từ + danh từ + #{issue ID}` +Tóm tắt nội dung của những thay đổi trong commit 1 cách ngắn gọn. Theo 1 số quy ước khác thì dòng này sẽ **không quá 80 kí tự**. Ngoài ra cũng nên **hạn chế sử dụng từ chuyên môn**. + +Nếu project sử dụng issue của github thì cuối dòng phải thêm `#{issue ID}` để tận dụng 1 số tiện ích của github. + +### Ví dụ 1 commit message : + +[Add]Add project readme #012345 + +[Modify]Change library AB to version 1.2.0 in setting + + + +# Tiếng Anh trong commit +## Các từ tiếng Anh hay dùng + +**Xác định động từ chính trong 1 commit sẽ dễ hiểu và dễ viết hơn** + +### Động từ + +Động từ để ở thì hiện tại. + +| ý nghĩa | từ | +| --------------------- | -------------- | +| tạo mới | create | +| xoá | remove, delete | +| cập nhật | update | +| cập nhật(version) | upgrade | +| thêm | add | +| sử dụng | use | +| bao gồm | include | +| sửa | modify | +| sửa (bugs) | fix (a bug) | +| thay đổi | change | +| di chuyển | move | +| ghi đè | replace | +| mở rộng | extend | +| sử dụng/không sử dụng | enable/disable | +| chỉnh lý | clean | +| liên kết | link | +| gửi | send | +| mở/đóng | open/close | + +Những từ trừu tượng như implement, improve, support thì không nên dùng. + +### Danh từ +Danh từ ngoài đời thì nhiều chứ trong code thì cũng không nhiều :D. +Những từ thường hay gặp : +bug, typo, changelog, config, settings, format, description, argument + +### Bổ ngữ, other + +Những bổ ngữ hay dùng : + +| ý nghĩa | từ | +| ----------------- | -------------------- | +| vì ..., trong ... | for ... | +| cùng với... | with ... | +| vượt qua... | over ... | +| trong... | in ... | +| thông qua... | via ... | +| từ ... đến ... | from ... to ... | +| thay thế cho... | instead of ... | +| nếu cần | if necessary | +| ...trước/sau | before .../after ... | + diff --git a/vn/git/.github/ISSUE_TEMPLATE.md b/vn/git/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..b04c639 --- /dev/null +++ b/vn/git/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,24 @@ +## Detailed Description (詳細な説明) + + +## Target Page (対象ページ) +- *Paste URL here* + +## Steps to Reproduce (再現させるためのステップ) +1. +2. +3. + +## Current Behavior(現在の挙動) + + +## Expected Behavior (適切な挙動) + + +## Context(発生した環境) +- Env: +- OS: +- Browser: +- Attachment: +- Effected pull: +- Task: diff --git a/vn/git/.github/PULL_REQUEST_TEMPLATE.md b/vn/git/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..23b3953 --- /dev/null +++ b/vn/git/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,40 @@ +## Related Tickets +- [#Ticket ID](https://dev.framgia.com/redmine/issues/???) + +## WHY +- Mô tả sơ lược về lý do tại sao phải làm PR này. + +## HOW +- Mô tả ngắn gọn cách thực hiện thay đổi trong PR + +## Evidence (Screenshot or Video) + +## Impacted Areas in Application (Optional) +*(Liệt kê những chức năng, api, service bị ảnh hưởng bởi PR này)* + +- Model ABC +- API XYZ + +## Checklist +- [ ] Unit test run successfully? +- [ ] Updated library at [here](https://???) +- [ ] Fill link PR into ticket and the opposite +- [ ] Note reason, scope of influence, solution into ticket +- [ ] Validate UI/Model/API +- [ ] Checked on iPhone 5, 7, X +- [ ] Followed latest specs at [#Link specs](https://???) + +## Library (Optional) +*(Liệt kê danh sách thư viện, các ứng của bên thứ 3 sử dụng trong PR bao gồm cả phiên bản sử dụng)* + +- Library: GoogleAnalysis v1.2.0 + +## Performance (Optional) +- [ ] Resolved n + 1 query +- [ ] Time run rake task : 1000 ms +- Generated SQL query + +## Notes (Optional) +*(Những note khác về PR. Ví dụ như các lệnh cần phải chạy, thêm biến môi trường ...)* +- Update environment variable to staging environment +- Run command to generate data diff --git a/vn/git/.github/README_TEMPLATE.md b/vn/git/.github/README_TEMPLATE.md new file mode 100644 index 0000000..6c4884e --- /dev/null +++ b/vn/git/.github/README_TEMPLATE.md @@ -0,0 +1,73 @@ +# Project Title + +Tên project + +## Getting Started + +Hướng dẫn cài đặt môi trường, thư viện, format .. + +### Prerequisites + +Những thứ cần để cài đặt phần mềm và cách cài đặt chúng + +``` +Đưa ra ví dụ +``` + +### Installing + +Các bước cần thiết để chạy trên môi trường development. + +Bước 1: + +``` +Đưa ra ví dụ +``` + +Bước 2 + +``` +Đưa ra ví dụ +``` + +Kết thúc với một ví dụ về việc lấy một số dữ liệu ra khỏi hệ thống hoặc sử dụng nó cho một bản demo nhỏ + +## Running the tests + +Giải thích cách chạy automated tests cho hệ thống. + +### Giới thiệu về coding style tests + +``` +Đưa ra ví dụ +``` + +## Deployment + +Thêm ghi chú bổ sung về cách triển khai này trên hệ thống môi trường production, staging + +## Built With + +* [Dropwizard](http://www.dropwizard.io/1.0.2/docs/) - Framework sử dụng +* [Maven](https://maven.apache.org/) - Dependency Management +* [ROME](https://rometools.github.io/rome/) - Used to generate RSS Feeds + +## Versioning + +Dự án sử dụng [SemVer](http://semver.org/) để quản lý phiên bản. Để xem chi tiết những phiên bản hiện tại, vui lòng kiểm tra tại [danh sách tag trong dự án](https://github.com/your/project/tags). + +## Authors + +* **Giang Hai Anh** - *Initial work* - [anhgh-1140](https://github.com/anhgh-1140) + +See also the list of [contributors](https://github.com/your/project/contributors) who participated in this project. + +## License + +This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details + +## Acknowledgments + +* Một số mẹo khi code. +* Tính năng nổi bật +* etc diff --git a/vn/git/.github/RELEASE_NOTE_TEMPLATE.md b/vn/git/.github/RELEASE_NOTE_TEMPLATE.md new file mode 100644 index 0000000..e670078 --- /dev/null +++ b/vn/git/.github/RELEASE_NOTE_TEMPLATE.md @@ -0,0 +1,69 @@ +## Environment : Development / Staging / Production + +## Version v1.0.0 - Nov 22nd, 2018 +### New features: + +(Đưa ra danh sách những feature mới trong lần release này) + +- Authentication +- Video player +- Video management (upload, edit, delete video) +- User profile, Search videos, Home screen, Trending screen + +Tùy theo yêu cầu dự án có thể đưa ra danh sách ticket đã làm như sau: + +- [#111111](https://dev.framgia.com/issues/) +- [#222222](https://dev.framgia.com/issues/) +- [#333333](https://dev.framgia.com/issues/) +- [#444444](https://dev.framgia.com/issues/) +- [#555555](https://dev.framgia.com/issues/) + +### Various dependency updates: + +(Danh sách các thư viện và frameworks sử dụng trong dự án: đặc biệt cần các thông tin về phiên bản sử dụng, trả phí hay không, link dẫn tới thư viện đó) + +- List libraries and frameworks: +| No. | Name | Paid | Verion | Link | +| --- | ---- | ---- | ------ | ---- | +| 1 | Swiftlint | Free | v0.27.0 | https://github.com/realm/SwiftLint | +| 2 | IQKeyboardManagerSwift | Free | v6.1.1 | https://github.com/hackiftekhar/IQKeyboardManager | +| 3 | OrderedSet | Free | v3.0.0 | https://github.com/Weebly/OrderedSet | +| 4 | SwiftDate | Free | v4.5.1 | https://github.com/malcommac/SwiftDate | +| 5 | ObjectMapper | Free | v3.3 | https://github.com/tristanhimmelman/ObjectMapper | +| 6 | Reusable | Free | v4.0 | https://github.com/AliSoftware/Reusable | +| 7 | Then | Free | v2.3 | https://github.com/devxoul/Then | +| 8 | RxSwift | Free | v4.1 | https://github.com/ReactiveX/RxSwift | +| 9 | RxCocoa | Free | v4.1 | https://github.com/ReactiveX/RxSwift/tree/master/RxCocoa | +| 10 | RxSwiftExt | Free | v3.1 | https://github.com/RxSwiftCommunity/RxSwiftExt | +| 11 | NSObject+Rx | Free | v4.2 | https://github.com/RxSwiftCommunity/NSObject-Rx | +| 12 | RxDataSources | Free | v3.0.0 | https://github.com/RxSwiftCommunity/RxDataSources | +| 13 | RxAlamofire | Free | v4.0 | https://github.com/RxSwiftCommunity/RxAlamofire | +| 14 | MBProgressHUD | Free | v1.1 | https://github.com/jdg/MBProgressHUD | +| 15 | Localize-Swift | Free | v2.0 | https://github.com/marmelroy/Localize-Swift | +| 16 | MJRefresh | Free | v3.1 | https://github.com/CoderMJLee/MJRefresh | + +### Enhancements: +(Những cải tiến so với phiên bản trước. Nếu không có ghi N/A) + +### Bugfixes: +(Những lỗi nào được xử lý. Nếu không có ghi N/A) + +### Removed obsolete code: +(Những phần code lỗi thời đã bị xóa bỏ. Nếu không có ghi N/A) + +### Compatibility notes: +(Những phiên bản, device, platform tương tích) + +- Work for iOS 10.0 and above + +### Known Issues and Problems +(Những vẫn đề tiềm ẩn trong bản release hiện tại. Nếu không có ghi N/A) + +- SDK creates high energy impact + +### Test: +- [x] Unit test +- [ ] Circle-ci +- [x] Integration test +- [x] System test / Final test +- [ ] Acceptance test diff --git a/vn/git/.github/VERSIONING.md b/vn/git/.github/VERSIONING.md new file mode 100644 index 0000000..a31d436 --- /dev/null +++ b/vn/git/.github/VERSIONING.md @@ -0,0 +1,61 @@ +# Software Versioning + +Tham khảo tài liệu [SemVer](http://semver.org/) trong việc đặt tên các phiên bản phát hành. + +## Các quy tắc đánh số cho version + +#### SemVer đưa ra các tiêu chuẩn sau cho việc đánh số: + +1. Phần mềm sử dụng SemVer PHẢI khai báo các API công cộng. Các API này có thể được khai báo trong mã nguồn chính hoặc trong tài liệu văn bản kèm theo. Tuy nhiên, khi hoàn thành, việc khai báo API phải được thực hiện chính xác và hoàn chỉnh. +2. Mỗi phiên bản đánh số thông thường PHẢI theo chuẩn X.Y.Z, trong đó X, Y, Z là các số nguyên không âm đại diện cho: + +- X là phiên bản chính (*Major version*) +- Y là phiên bản phụ (*Minor version*) +- Z là phiên bản vá (*Path version*) + +Khi phát hành một phiên bản mới, X, Y, Z PHẢI được tăng ổn định và có thứ tự. Ví dụ 1.9.0 → 1.10.0 → 1.10.1 + +1. Một khi phiên bản mới đã được phát hành, tất cả nội dung (mã nguồn, API) của phiên bản đó KHÔNG ĐƯỢC thay đổi. + +#### Bất kỳ thay đổi phát sinh nào đều PHẢI được công bố như phát hành một phiên bản mới. + +1. Tất cả các phiên bản phát triển ban đầu NÊN được đánh số dạng `0.y.z`. Bạn có thể thực hiện bất kỳ thay đổi nào trong các phiên bản ở giai đoạn này. Các hàm API công cộng KHÔNG NÊN được coi là ổn định. +2. Phiên bản 1.0.0 bắt đầu cung cấp các hàm API công cộng. Kể từ phiên bản này, việc tăng số phiên bản phụ thuộc vào cách thay đổi các API. +3. PHẢI tăng phiên bản vá Z (`x.y.Z`, với `x > 0`) nếu phiên bản này: + +- Chỉ sửa các lỗi phát sinh, và đảm bảo tương thích với các bản cũ trước đó. + +1. PHẢI tăng phiên bản phụ Y (`x.Y.z`, với `x > 0`) nếu phiên bản này: + +- Tương thích ngược với các bản cũ có cùng phiên bản chính +- Cung cấp mới một API công cộng +- Có API công cộng được khuyến cáo là không nên dùng (*deprecated*) + +Bạn CÓ THỂ tăng `Y` nếu: + +- Thêm mới một chức năng quan trọng +- Có thêm bất kỳ cải thiện trong mã nguồn + +#### Phiên bản phụ CÓ THỂ bao gồm những thay đổi ở cấp độ vá. Phiên bản vá `z` PHẢI được thiết lập về 0 khi tăng số phiên bản phụ `y`. + +1. PHẢI tăng phiên bản chính X (`X.y.z`, với `X > 0`) nếu phiên bản này: + +- Có thêm API công cộng không tương thích với các phiên bản cũ + +Phiên bản chính CÓ THỂ bao gồm những thay đổi ở cấp độ vá và cấp độ phụ. Phiên bản phụ `y` và vá `z` PHẢI được thiết lập về 0 khi tăng số phiên bản chính `x`. + +1. Mỗi phiên bản CÓ THỂ sử dụng dấu gạch ngang (-), và một chuỗi dấu chấm (.) để tách các định danh cho một phiên bản tiền phát hành hoặc một phiên bản vá. Các tên hợp lệ PHẢI bao gồm các chữ cái thường, chữ cái hoa, chữ số và dấu gạch ngang (`0-9A-Za-z-`). Phiên bản tiền phát hành có quyền ưu tiên thấp hơn phiên bản bình thường có liên quan. + +Ví dụ: `1.0.0-alpha`, `1.0.0-alpha.1` + +1. Các bản *metadata* CÓ THỂ được biểu thị bằng cách thêm một dấu cộng (+) và một loạt dấu chấm (.) tách các định danh ngay sau số hiệu phiên bản tiền phát hành hoặc phiên bản vá. + +Các định danh sau dấu cộng PHẢI bao gồm một chuỗi chữ cái hoa, thường, chữ số, hoặc ký tự gạch ngang (-). + +Phiên bản metadata NÊN được bỏ qua khi xác định quyền ưu tiên giữa các phiên bản. Do đó 2 phiên bản chứa các phiên bản chính/phụ/vá giống nhau, nhưng số hiệu *metadata* khác nhau được coi là tương đồng. + +Ví dụ: `1.0.0-alpha+001`, `1.0.0+20130313144700`, `1.0.0-beta+exp.sha.5114f85` + +1. Trước khi phát hành, quyền ưu tiên PHẢI được tính toán dựa trên thứ tự số hiệu của phiên bản chính, phụ, vá, và tiền phát hành (bản *metadata* không có quyền ưu tiên). Với số hiệu của mỗi phiên bản, bao gồm các chữ số (được so sánh như so sánh các số tự nhiên), ký tự (-) và các định danh (đươc so sánh theo thứ tự sắp xếp ASCII). Định số luôn có ưu tiên thấp hơn các định dạng khác. + +Ví dụ: `1.0.0-alpha < 1.0.0-alpha.2 < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0`