ស្វែងយល់អំពីការ Submit នូវ patch នៅក្នុង Symfony3
Patches គឺជាវិធីដ៏ល្អបំផុតដែលផ្ដល់នូវ ការជួសជុលនូវ bug រឺក៏ដើម្បីស្នើទៅកាន់ Symfony អោយកាន់តែមានភាពប្រសើរឡើង។
ជំហ៊ានទី១៖ តម្លើងនូវ Environment របស់អ្នក
ក) តម្លើងនូវ Software Stack
មុននឹងធ្វើការនៅលើ Symfony អ្នកត្រូវតម្លើងនូវ environment ជាមួយនឹង software ដូចខាងក្រោម៖
ទី១ គឺ Git
ទី២ គឺ PHP version 5.5.9 រឺក៏ ខ្ពស់ជាងនេះ
ខ) ធ្វើការ configure Git
សូមធ្វើការ set up នូវ ព័ត៌មាននៃអ្នកប្រើប្រាស់របស់អ្នកជាមួយនឹង ឈ្មោះពិតនិងធ្វើការជាមួយនឹង អ៊ីម៉ែល៖
គ) ចាប់យកនូវ Symfony Source Code
ធ្វើការទទួលយកនូវ Symfony Source Code ដូចតាមលំដាប់ខាងក្រោម៖
ដំបូងត្រូវបង្កើត គណនី GitHub ហើយត្រូវ sign in
ជាបន្ទាប់គឺ Fork នូវ Symfony repository (ចុចលើប៊ូតុង Fork)
បន្ទាប់ពីនោះគឺ ធ្វើការ clone នូវ fork ទៅក្នុង local របស់អ្នក (វានឹងបង្កើត symphony directory)
បន្ទាប់មកទៀតគឺបន្ថែមនូវ upstream repository ជា remote៖
ឃ) ពិនិត្យនូវ current Tests Pass
ពេលនេះ Symfony គឺបានតម្លើងរួចរាល់ហើយ ដូចនេះសូមពិនិត្យថាតើ unit tests pass ទាំងអស់សម្រាប់ environment របស់អ្នក វាដូចទៅនឹង ឯកសារ ដែលបានពន្យល់នូវខាងលើរឺយ៉ាងណា។
ជំហ៊ានទី២៖ ធ្វើការលើ Patch របស់អ្នក
ក) អាជ្ញាប័ណ្ឌ (License)
មុននឹងចាប់ផ្ដើម អ្នកត្រូវដឹងថាតើ patches ទាំងអស់ ដែលអ្នកនឹងធ្វើការ submit នោះត្រូវតែ released ដោយស្ថិតក្រោម MIT license លុះត្រាតែបានបញ្ជាក់យ៉ាងជាក់លាក់នៅក្នុង commit របស់អ្នក។
ខ) ជ្រើសរើសនូវ Branch ដែលត្រឹមត្រូវ
មុននឹងធ្វើការលើ patch អ្នកត្រូវតែកំណត់នៅលើ branch ណាមួយដែលអ្នកត្រូវការ៖
ទី១ គឺ 2.7 បើអ្នកជួលជុលនូវ bug សម្រាប់ feature ដែលមានរួចហើយ រឺក៏ត្រូវការធ្វើការកែប្រែនូវការបរាជ័យទាំងនោះទៅក្នុង បញ្ជីនៃការផ្ដាស់ប្ដូរក្នុង patch versions (អ្នកអាចនឹងរើសយក branch ដែលខ្ពស់ជាងគេប្រសិបើ feature ដែលអ្នកកំពុងជួសជុលបានណែនាំអោយប្រើប្រាស់នូវ version ចុងក្រោយ)
គ) បង្កើត Topic Branch
រាល់ពេលដែលអ្នកចង់ធ្វើការជាមួយ patch សម្រាប់ bug រឺក៏ធ្វើអោយប្រសើរឡើង នោះអ្នកត្រូវបង្កើតនូវ topic branch៖
រឺក៏ ប្រសិនបើអ្នកត្រូវការផ្ដល់នូវ bugfix សម្រាប់ 2.7 branch ជាដំបូងត្រូវធ្វើការ remote 2.7 branch local ជាមុនសិន៖
បន្ទាប់មកបង្កើត branch ថ្មីមួយបិទនូវ 2.7 branch ដើម្បីធ្វើការលើ bugfix៖
Commands ខាងលើបានធ្វើការ ផ្លាស់ប្ដូរដោយស្វ័យប្រវត្តិនូវកូដដែលទើបនឹងបង្កើត branch ថ្មី។
ឃ) ធ្វើការលើ Patch របស់អ្នក
ធ្វើការលើកូដបានច្រើនតាមដែលលោកអ្នកត្រូវការនិង commit បានច្រើនតាមដែលអ្នកចង់ ប៉ុន្តែត្រូវចាំក្នុងចិត្តថា៖
ទី១ គឺអានអំពី Symfony conventions និងស្របទៅតាម ស្តង់ដារនៃកូដ (ប្រើ git diff –check ដើម្បីពិនិត្យអំពី គំលាត –)
ទី២ គឺបន្ថែមនូវ unit tests ដើម្បីពង្រឹងនូវ ការជួសជូល bug រឺក៏ feature ថ្មីមានដំណើរការល្អ
ទី៣ ព្យាយាមនូវការកុំបោះបង់នូវ backward compatibility
ទី៤ ធ្វើអោយ atomic និង logically មានភាពដាច់ដោយឡែកពីគ្នា
ទី៥ មិនត្រូវ ជួសជុលនូវស្តង់ដារនៃកូដក្នុង កូដដែលមានរួចព្រោះអាចនឹងធ្វើអោយការ review មានការពិបាក
ទី៦ សរសេរនូវ សារ commit ល្អ
ង) រៀបចំនូវ Patch របស់អ្នកសម្រាប់ Submission
ពេលដែល patch របស់អ្នកមិនមែនជា bug fix វាត្រូវបញ្ចូលនូវ៖
ទី១ ការពន្យល់នៃការកែប្រែក្នុង CHANGELOG file(s)
ទី២ ការពន្យល់នូវរបៀប upgrade នូវ application ដែលមានរួចក្នុង UPGRADE file(s) ប្រសិនបើការកែប្រែបោះបង់នូវការត្រលប់ក្រោយ
ជំហ៊ានទី៣៖ Submit Patch
នៅពេលដែលអ្នកគិតថា patch របស់អ្នករួចរាល់សម្រាប់ការ submission សូមធ្វើដូចជំហ៊ានខាងក្រោម៖
ក) Rebase Patch
មុននឹងធ្វើការ submit patch អ្នកត្រូវ update នូវ branch របស់អ្នក៖
ពេលកំពុងធ្វើ rebase command អ្នកប្រហែលជាត្រូវ ជួលជុលនូវ merge conflicts។ git status នឹងបង្ហាញអ្នកនូវ unmerged file។ សូមដោះស្រាយបញ្ហា conflicts ទាំងអស់បន្ទាប់មកទៀតគឺ បន្តនូវការ rebase៖
ពិនិត្យមើលការតេស្តទាំងអស់ដែលនៅតែ ឆ្លងកាត់ និង រុញ នូវ branch របស់អ្នកតាមរយៈការ remote៖
ខ) ធ្វើការទាញយក Request
ពេលនេះអ្នកអាចធ្វើការទាញយក request ពី symphony/symphony GitHub repository។
ដើម្បីអោយ core team ងាយស្រួលធ្វើការ គឺត្រូវតែបញ្ចូលនូវ component ដែលបានកែប្រែក្នុងសារដែលបានទាញយក request ដូចខាងក្រោម៖
ជាទូទៅការព័ណនានៃ pull request ផ្ទុកនូវ តារាងដែលអ្នកត្រូវបំពេញជាមួយនឹងចម្លើយដែលសមរម្យ។ នេះជាការធានានូវការរួមចំណែកដែលអាចនឹង review ដែលមិត្រូវការ មតិរង្វិលជុំនិង ការរួមចំណែករបស់អ្នកអាចនឹងបញ្ចូលទៅក្នុង Symfony កាន់តែលឿនតាមដែលអាចធ្វើទៅបាន។
ចម្លើយមួយចំនួនដែលឆ្លើយទៅនឹងសំនួរ អាចនឹងបង្ករអោយមានតម្រូវការជាច្រើនទៀត។
ប្រសិបើតម្រូវការមួយចំនួនកាលពីមុនមិនទាន់បំពេញតម្រូវការបានទេ សូមធ្វើការបង្កើត todo –list៖
ប្រសិបើកូដមិនទាន់រួចរាល់ ព្រោះអ្នកមិនមានពេលធ្វើបញ្ចប់វារឺក៏មកពីអ្នកចង់បានមតិរិះគន់មុនចំពោះការងាររបស់អ្នក សូមបន្ថែម item ទៅកាន់ todo –list៖
គ) Rework Patch
ដោយផ្អែកទៅលើ មតិនៅលើការទាញ request អ្នកប្រហែលជាត្រូវការធ្វើអោយ patch របស់អ្នកធ្វើការម្ដងទៀត។ មុននឹង submit patch ម្ដងទៀតគឺត្រូវ rebase ជាមួយនឹង upstream/master រឺក៏ upstream/2.7 មិនត្រូវ merge និងបង្ខំ push ទៅកាន់ origin ទេ៖