โ€บronka.dev

ืคืจื•ืžืคื˜ื™ื ื•ืงื•ืžื™ื˜ื™ื: ื”ื“ืžื™ื•ืŸ ืฉืžืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืขื AI

9 ื‘ื“ืฆืžื‘ืจ 2024ยท4 ื“ืงื•ืช ืงืจื™ืื”

ืคืจื•ืžืคื˜ื™ื ื•ืงื•ืžื™ื˜ื™ื: ื”ื“ืžื™ื•ืŸ ืฉืžืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืขื AI

ื‘-Google ื•-Meta ื™ืฉ ื’ื™ืฉื•ืช ืขื‘ื•ื“ื” ื™ื™ื—ื•ื“ื™ื•ืช ืœื ื™ื”ื•ืœ ื’ืจืกืื•ืช, ืฉื•ื ื•ืช ืžืื•ื“ ืžืืœื• ืฉืžื›ื™ืจื™ื ื‘ืขื‘ื•ื“ื” ืขื GitHub. ื‘ืขื•ื“ ืฉืจื•ื‘ ื”ืขื•ืœื ืขื•ื‘ื“ ื‘ืฉื™ื˜ืช ื”-Branch-based, ื—ื‘ืจื•ืช ืขื ืง ื›ืžื• Google ื•-Meta ืขื•ื‘ื“ื•ืช ื‘ืฉื™ื˜ืช Commit-based. ื”ื‘ื“ืœ ื–ื” ื ื•ื‘ืข ืžื”ืขื•ื‘ื“ื” ืฉื‘ื—ื‘ืจื•ืช ืืœื• ืžืชื ื”ืœื™ื ืžื•ืœ ืžื•ื ื•ืจืคื• ืขืฆื•ื (Monorepo), ืฉื ื”ืžื™ื–ื•ื’ื™ื (Merge) ื•ื”ืขื ืคื™ื (Branches) ืคื—ื•ืช ืฉื™ืžื•ืฉื™ื™ื ืœื ื™ื”ื•ืœ ื‘ืงื ื” ืžื™ื“ื” ื›ื” ื’ื“ื•ืœ. ืชื—ืฉื‘ื• ืขืœ ื–ื” ืฉื‘ื–ืžืŸ ืฉืืชื ืขื•ื‘ื“ื™ื ืขืœ ื”ืคื™ืฆืณืจ ื›ื‘ืจ ื ื›ื ืกื• 100 ืคื™ืฆืณืจื™ื ืื—ืจื™ื ื‘ื’ืœืœ ืฉื™ืฉ ืขื•ื“ ืขืฉืจื•ืช ืืœืคื™ ืžืคืชื—ื™ื ืฉืขื•ื‘ื“ื™ื ืื™ืชื›ื ืขืœ ืื•ืชื• codebase.

ื‘ื’ื•ื’ืœ, ืœื“ื•ื’ืžื”, ื›ืœ ืฉื™ื ื•ื™ ืžืชื‘ืฆืข ื‘ืฆื•ืจื” ืฉืœ ืฉื™ื ื•ื™ ืงื˜ืŸ ื”ืžื›ื•ื ื” CL (ืงื™ืฆื•ืจ ืฉืœ Change List), ืืฉืจ ืžืชื‘ืกืก ืขืœ ื”ืžืืกื˜ืจ ื•ืžื•ืชืื ืœืขื‘ื•ื“ื” ื‘ืกื‘ื™ื‘ื” ืฉื‘ื” ืžืชืจื—ืฉื™ื ืขืฉืจื•ืช ืืœืคื™ ืฉื™ื ื•ื™ื™ื ืžื“ื™ ื™ื•ื. ื›ืœ ืงื•ืžื™ื˜ ื”ื•ื ื‘ืขืฆื CL ืฉื”ื•ืคืš ืื•ื˜ื•ืžื˜ื™ืช ืœืกื•ื’ ืฉืœ PR (ืงื™ืฆื•ืจ ืฉืœ Pull Request).

ื›ืœื™ ื›ืžื• Graphite ืžืืคืฉืจ ืœืขื‘ื•ื“ ื‘ื’ื™ืฉื” ื–ื• ื’ื ื‘-GitHub, ื•ืžืงืœ ืขืœ ื”ืžืคืชื—ื™ื ืฉืจื•ืฆื™ื ืœื™ื”ื ื•ืช ืžื”ื™ืชืจื•ื ื•ืช ืฉืœ CLื™ื ืงื˜ื ื™ื ื’ื ืžื—ื•ืฅ ืœื—ื‘ืจื•ืช ื”ื’ื“ื•ืœื•ืช.

ื“ื•ื’ืžื” ืœื”ื‘ื“ืœ ื‘ื”ื™ืกื˜ื•ืจื™ื™ืช Git:

ื’ื™ืฉื” ืžืกื•ืจืชื™ืช ืขื Branches ื‘ืžืงืจื” ื”ื˜ื•ื‘

*   Merge feature-branch into main
|\
| * Change title text
| * Added utility function
| * Refactored API layer
| * Fixed bug
|/
* Previous commit

ื‘ืžืงืจื” ื”ืจืข

*   Merge feature-branch into main
|\
| * wip
| * wip
| * wip
| * wip
|/
* Previous commit

ื”ืชื”ืœื™ืš ืฉืœ ื”-CR (Code Review) ื™ืชื‘ืฆืข ื‘ืกื•ืฃ ืขืœ ื›ืœ ื”ืงื•ื“, ืžื” ืฉืžื™ื™ืฆืจ PR ื’ื“ื•ืœ ืขื ื”ืžื•ืŸ ืงื•ื“ ืฉืœืื• ื“ื•ื•ืงื ืงืฉื•ืจ ืื—ื“ ืœืฉื ื™.

ื’ื™ืฉื” Commit-based ืขื CLื™ื ืงื˜ื ื™ื

* Change title text
* Added utility function
* Refactored API layer
* Fixed bug in service

ื”ืชื”ืœื™ืš ืฉืœ ื”-CR ื™ืชื‘ืฆืข ืขื‘ื•ืจ ื›ืœ ืงื•ืžื™ื˜, ืžื” ืฉืžื™ื™ืฆืจ ืžืกืคืจ PRื™ื ืงื˜ื ื™ื ืฉืงืœ ืœืขื‘ื•ืจ ืขืœื™ื”ื.

ืœืžื” CLื™ื ืงื˜ื ื™ื ื—ืฉื•ื‘ื™ื ื›ืœ ื›ืš?

ื™ืชืจื•ื ื•ืช ืžืจื›ื–ื™ื™ื:

  1. ืžื”ื™ืจื•ืช ื•ืชืฉื•ืžืช ืœื‘ ื‘-Code Review
    ืฉื™ื ื•ื™ื™ื ืงื˜ื ื™ื ืงืœ ื™ื•ืชืจ ืœื‘ื“ื•ืง, ืžื” ืฉืžื•ื‘ื™ืœ ืœ-CR ืžื”ื™ืจ ื•ืžืžื•ืงื“.

  2. ืžื ื™ืขืช ื‘ืื’ื™ื ื‘ืงืœื•ืช
    ืฉื™ื ื•ื™ ืงื˜ืŸ ืžืืคืฉืจ ื’ื ืœื›ื ื•ื’ื ืœืžื‘ืงืจ ื”ืงื•ื“ ืœื”ื‘ื™ืŸ ืืช ื”ื”ืฉืœื›ื•ืช ืฉืœื• ื‘ืฆื•ืจื” ื‘ืจื•ืจื” ื™ื•ืชืจ.

  3. ืงืœื•ืช ื‘ืžื™ื–ื•ื’ ื•ืขื“ื›ื•ื ื™ื ืชื›ื•ืคื™ื
    ื‘ืคืจื•ื™ืงื˜ื™ื ื’ื“ื•ืœื™ื, CL ืงื˜ืŸ ืžืฉืชืœื‘ ื˜ื•ื‘ ื™ื•ืชืจ ืขื ืžืื’ืจื™ ืงื•ื“ ืฉืžืชืขื“ื›ื ื™ื ื›ืœ ื”ื–ืžืŸ.

  4. ืขื‘ื•ื“ื” ื™ืขื™ืœื” ืžื•ืœ AI
    ืขืœ ื›ืš ื ืจื—ื™ื‘ ื‘ื”ืžืฉืš.

ื”ื’ื“ืจืช CL "ืงื˜ืŸ":

CL ืฆืจื™ืš ืœื˜ืคืœ ื‘ื‘ืขื™ื” ืื—ืช ื‘ืœื‘ื“, ืœื›ืœื•ืœ ื‘ื“ื™ืงื•ืช ืจืœื•ื•ื ื˜ื™ื•ืช, ื•ืœื ืœื”ื™ื•ืช ืžืคื•ืจืง ืžื“ื™ ื›ืš ืฉืงืฉื” ืœื”ื‘ื™ืŸ ืื•ืชื•.
ืœื“ื•ื’ืžื”: ืื ืืชื ืžื•ืกื™ืคื™ื API ื—ื“ืฉ, ื›ืœืœื• ื‘-CL ื’ื ื“ื•ื’ืžื” ืœืฉื™ืžื•ืฉ ื‘ื•.

ืขื‘ื•ื“ื” ืขื ื›ืœื™ื ืžื‘ื•ืกืก AI: ืœืžื” ื›ื“ืื™ ืœื”ืคื•ืš ื›ืœ ืคืจื•ืžืคื˜ ืœ-Commit?

ื›ืฉืขื•ื‘ื“ื™ื ืขื ื›ืœื™ AI ื›ืžื• GitHub Copilot ืื• Cursor AI, ื›ื“ืื™ ืœื”ืงื‘ื™ืœ ื‘ื™ืŸ ืขื‘ื•ื“ื” ืขื ืคืจื•ืžืคื˜ื™ื ืœืขื‘ื•ื“ื” ืขื Commits. ื›ืœื•ืžืจ, ื›ืœ ืคืจื•ืžืคื˜ ืฆืจื™ืš ืœื™ื™ืฆืจ ืฉื™ื ื•ื™ ืžืžื•ืงื“, ืฉืžื”ื•ื•ื” Commit ื‘ืคื ื™ ืขืฆืžื•. ื›ืš ื ื™ืชืŸ ืœืฉืžื•ืจ ืขืœ ื–ืจื™ืžื” ืžืกื•ื“ืจืช, ืœื”ื™ืžื ืข ืžื‘ืขื™ื•ืช, ื•ืœื ืฆืœ ืืช ื”ื™ื›ื•ืœื•ืช ืฉืœ ื”-AI ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ.

ืคืจื•ืžืคื˜ื™ื ืืจื•ื›ื™ื = Commitื™ื ืžืกื•ื‘ื›ื™ื

ื›ืฉื ืฉ-Commit ื’ื“ื•ืœ ืžื“ื™ ืขืœื•ืœ ืœื”ื™ื•ืช ืžื‘ืœื‘ืœ, ืงืฉื” ืœื ื™ื”ื•ืœ, ื•ืœื”ืกืชื‘ืš ื‘ืœื•ื’ื™ืงื•ืช ืฉื•ื ื•ืช, ื’ื ืคืจื•ืžืคื˜ ืืจื•ืš ืžื“ื™ ืœื›ืœื™ AI ืขืœื•ืœ ืœื’ืจื•ื ืœืชื•ืฆืื•ืช ืœื ืžื“ื•ื™ืงื•ืช ืื• ืืคื™ืœื• "ื”ื–ื™ื•ืช" ืฉืœ ื”ืงื•ื“. ื”-AI ืขืฉื•ื™ ืœื ืกื•ืช ืœืงืฉื•ืจ ื‘ื™ืŸ ืจืขื™ื•ื ื•ืช ืžื•ืจื›ื‘ื™ื ืžื“ื™ ื•ืœื”ื›ื ื™ืก ืฉื’ื™ืื•ืช ืœื•ื’ื™ื•ืช ืื• ืžื‘ื ื™ื ืœื ื ื›ื•ื ื™ื.

Commit = ื ืงื•ื“ืช ืฉืžื™ืจื”

Commit ืงื˜ืŸ ื“ื•ืžื” ืœื ืงื•ื“ืช ืฉืžื™ืจื” ื‘ืžืฉื—ืง ืžื—ืฉื‘. ื”ื•ื ืžืืคืฉืจ ืœื—ื–ื•ืจ ืื—ื•ืจื”, ืœื‘ื“ื•ืง ืžื” ื”ืฉืชื ื”, ื•ืœื”ื‘ื™ืŸ ืืช ื”ื”ืฉืœื›ื•ืช ืฉืœ ื›ืœ ืฆืขื“ ื‘ืงืœื•ืช. ื›ืฉื›ืœ ืคืจื•ืžืคื˜ ืžืชื•ืจื’ื ืœ-Commit ื ืคืจื“, ื ื™ืชืŸ ืœื”ื‘ื˜ื™ื— ืฉื”ืงื•ื“ ื™ื™ืฉืืจ ืงืจื™ื ื•ืžืกื•ื“ืจ ื•ื”ื›ื™ ื—ื•ืฉื‘ ื”ืคืจื•ื™ื™ืงื˜ ื™ืจื•ืฅ ื•ืœื ื™ื”ื™ื” ืื™ื–ื” Error, ื•ืืคืฉืจ ื™ื”ื™ื” ืœืขืงื•ื‘ ืื—ืจื™ ื›ืœ ืฉืœื‘ ื‘ื›ืชื™ื‘ืชื•.

ืœื“ื•ื’ืžื”

  • ืคืจื•ืžืคื˜ 1: "Add a function to validate email addresses."
    Commit: ื”ื•ืกืคืช ื”ืคื•ื ืงืฆื™ื” validateEmail.

  • ืคืจื•ืžืคื˜ 2: "Write unit tests for validateEmail."
    Commit: ื”ื•ืกืคืช ื‘ื“ื™ืงื•ืช ื™ื•ื ื™ื˜ ืœืคื•ื ืงืฆื™ื”.

  • ืคืจื•ืžืคื˜ 3: "Integrate validateEmail into the user registration process."
    Commit: ืฉื™ืœื•ื‘ ื”ืคื•ื ืงืฆื™ื” ื‘ืชื”ืœื™ืš ื”ืจื™ืฉื•ื.

ืื ื™ืชื’ืœื” ื‘ืื’, ืงืœ ืœืืชืจ ืื•ืชื• ื›ื™ ื›ืœ ืฉืœื‘ ืชื•ืขื“ ื‘ื ืคืจื“.

ื–ืจื™ืžืช ืขื‘ื•ื“ื” ื‘ืจื•ืจื” ื™ื•ืชืจ ื‘ืฆื•ื•ืช

ื‘ืฆื•ื•ืช ืคื™ืชื•ื—, Commitื™ื ืงื˜ื ื™ื ืžืฉืคืจื™ื ืชืงืฉื•ืจืช ื•ืฉื™ืชื•ืฃ ืคืขื•ืœื”. ื›ืฉืืคืฉืจ ืœืจืื•ืช ืžื” ื›ืœ ืคืจื•ืžืคื˜ ื™ืฆืจ ื•ืื™ืš ื”ื•ื ืžืชืงืฉืจ ืœืงื•ื“ ื”ืงื™ื™ื, ืงืœ ื™ื•ืชืจ ืœื“ื•ืŸ ืขืœ ืฉื™ื ื•ื™ื™ื, ืœื‘ื“ื•ืง ืื•ืชื, ื•ืœืฉืคืจ ืืช ื”ืชื”ืœื™ืš.

ืœืกื™ื›ื•ื

ืฉื™ืžื•ืฉ ื‘ืคืจื•ืžืคื˜ื™ื ื›-Commitื™ื ืงื˜ื ื™ื ื”ื•ืคืš ืืช ื”ืขื‘ื•ื“ื” ืขื AI ืœืžืžื•ืงื“ืช ื™ื•ืชืจ, ืžืงื˜ื™ืŸ ืืช ื”ืกื™ื›ื•ืŸ ืœื˜ืขื•ื™ื•ืช ื•ืžืงืœ ืขืœ ื”ืžืขืงื‘ ืื—ืจื™ ื”ืงื•ื“. ื ืกื• ืœื—ืฉื•ื‘ ืขืœ ื›ืœ ืคืจื•ืžืคื˜ ื›ืขืœ ืฆืขื“ ื‘ืจื•ืจ ื•ืžื•ื’ื“ืจ, ื›ืš ืฉื‘ืžืงืจื” ืฉืœ ื‘ืขื™ื” ืชื•ื›ืœื• ืœื—ื–ื•ืจ ืื—ื•ืจื” ืœื ืงื•ื“ืช ื”ืฉืžื™ืจื” ื”ืื—ืจื•ื ื” ื‘ืงืœื•ืช.

ื’ื™ืœื•ื™ ื ืื•ืช: ื”ืคื•ืกื˜ ื ื›ืชื‘ ื‘ืขื–ืจืช AI ื‘ืฉื™ื˜ื” ื”ืžืชื•ืืจืช ื›ื“ืœื”ืœืŸ ๐Ÿ˜Š