Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

სანამ წვლილს შეიტანთ

იმ შემთხვევაში, თუ გსურთ შეიტანოთ კოდი (ან თავად დაამატოთ აქტივები თამაშში) განაგრძეთ კითხვა. თუ არ გსურთ თქვენი აქტივების დამატება, გადადით Contributing Assets.

Git Workflow

არსებობს ორი ძირითადი ვარიანტი, თუ როგორ შეიძლება შეიტანოთ წვლილი თამაშში. მიუხედავად იმისა, თუ როგორ გადაწყვეტთ თქვენი ვალდებულებების შესრულებას, დარწმუნდით, რომ მიჰყევით ქვემოთ მოყვანილ ჩვენს ვალდებულებებს.

ვარიანტი #1: თანამშრომლობის საცავი

ეს არის ჩვენი შემოთავაზებული გზა პროექტში წვლილისთვის.

ეს არის საჯარო საცავი, სადაც ყველას შეუძლია ფილიალების შექმნა (ქვემოთ მოცემული ნაბიჯების შემდეგ), ის სინქრონიზებულია ძირითადი რეპოდან საათობრივ ცვლილებებთან და რეგულარულ ფილიალებთან არ არის გაზიარებული ორს შორის (ერთადერთი გამონაკლისი არის სამაგისტრო ფილიალი). ფილიალის ქონა ჩანგლების გარეშე შეიძლება იყოს უფრო მოსახერხებელი კონტრიბუტორებისთვის როგორც თქვენ შეგიძლიათ თავიდან აიცილოთ ჩანგლის არსებობის ყველა ნაკლოვანება.

თქვენი პირველი წვლილისთვის, მიჰყევით ამ ნაბიჯებს, რათა მიიღოთ წვდომა ჩვენს განვითარების საცავზე:

  1. შემოუერთდით ჩვენს თანამშრომლობის ჯგუფს: https://gitlab.com/veloren/dev.
  2. Ping ან Core Developers ან Admins-ზე ჩვენს Discord #new-contributors არხზე (ან რომელი არხი შესაფერისია). შეგვატყობინეთ თქვენი GitLab მომხმარებლის სახელის შესახებ და ჩვენ შევძლებთ მოგცეთ დეველოპერის ნებართვები.
  3. გადადით მისამართზე https://gitlab.com/veloren/dev/veloren და კლონირეთ საცავი თქვენს კომპიუტერში.
  4. შექმენით ფუნქციების ფილიალი (დაწვრილებით მის შესახებ ქვემოთ). ახლა შეგიძლიათ დამოუკიდებლად იმუშაოთ ან სხვებთან ერთად იმუშაოთ იმავე ფილიალში.

განვითარების საცავი პრაქტიკულად იგივეა, რაც მთავარი საცავი მაგრამ ყველას შეუძლია მართოს ფილიალები განვითარების საცავში გარეშე ძირითადი რეპოს ნებისმიერი გზით დაშლის შესაძლებლობა.

ფუნქციების ფილიალების დასახელება

ჩვენ ვიყენებთ ფუნქციების ფილიალებს შემდეგი დასახელების სქემით ფილიალის მფლობელის ადვილად იდენტიფიცირებისთვის:

git checkout -b <your_nickname>/<branch_name>

მაგალითი: zesterer/fix_scrolling_in_chat

ვარიანტი #2: ჩანგალი საცავი

ჩანგლის გამოყენების უარყოფითი მხარეები:

  • თქვენ უნდა დააკონფიგურიროთ CI, რომ იმუშაოთ თქვენს ჩანგალზე.
  • დამხმარეებს არ შეუძლიათ ადვილად შეიტანონ ცვლილებები თქვენს შერწყმის მოთხოვნებში.

მაგრამ თქვენ თავისუფლად შეგიძლიათ აირჩიოთ ეს სამუშაო პროცესი თანამშრომლობის რეპოს ნაცვლად (იხ. ზემოთ). გადადით GitLab-ში, მთავარ საცავში (არა თანამშრომლობის) და გამოიყენეთ მათი ჩანგლის ღილაკი. გამოიყენეთ პრობლემების მოგვარების ნაბიჯები შემდეგ ნაწილში, რათა LFS-მა იმუშაოს.

პრობლემების მოგვარება Git LFS

როდესაც მთავარ რეპოში ფილიალზე მუშაობის ნაცვლად ჩანგალზე მუშაობთ, git-lfs-ში შეცდომის გამო ამ დროისთვის შემდეგი უნდა გააკეთოთ:

  1. დააკონფიგურირეთ git-lfs დაბინძურების იგნორირებაზე:
    git config filter.lfs.smudge "git-lfs smudge --skip -- %f"
    git config filter.lfs.process "git-lfs filter-process --skip"
    ```

2. დაამატეთ Veloren თქვენს ზემოთ დისტანციურ პულტად:

```bash
    git remote add upstream https://gitlab.com/veloren/veloren
    ```

3. განაგრძეთ და გაუშვით `git lfs pull upstream` და გააგრძელეთ ასე, როდესაც ახალი აქტივები დაემატება რეპოს.

#### ჩაიდინეთ მითითებები

მიუხედავად იმისა, თუ რომელი ვარიანტი აირჩიე, ჩვენ გვინდა ჩვენი
ჩაიდინეთ ისტორია, რომ იყოს სუფთა და გაუადვილეთ თვალყური ადევნოთ ჩვენს წარსულ ცვლილებებს.
სუფთა ვალდებულებების უზრუნველსაყოფად, ჩვენ შევადგინეთ შემოთავაზებული პრაქტიკისა და რჩევების სია:

* ** დაყავით თქვენი ცვლილებები გონივრული ზომის, მაგრამ მუშაობის ლოგიკურ ნაწილებად.**

თუ გრძნობთ, რომ მახასიათებელი შეიძლება დაიყოს სამუშაოს მცირე ნაწილად, შეგიძლიათ ასახოთ ეს თქვენი ვალდებულებებით.
შეიძლება ძნელი იყოს ბალანსის პოვნა სწორი რაოდენობის ვალდებულებებს შორის, უბრალოდ შეეცადეთ შეასრულოთ ვალდებულებები, რომლებიც თქვენთვის გონივრული იქნება.

* **გამოიყენეთ აღწერილობითი დავალების სახელები.**

დაუთმეთ ერთი წუთით მოკლედ აღწეროთ რას ცვლის თქვენი ვალდებულება ან თუნდაც რატომ ცვლის ის რაღაცას.
მაგალითად, `fixes` ცუდი სახელია ჩადენისთვის, რადგან ის არაფერს გეუბნებათ თავად ვალდებულების მნიშვნელოვნების შესახებ.
თუ GitLab-ზე არის პრობლემა, რომელიც დაკავშირებულია commit-თან, შეგიძლიათ გამოიყენოთ საკითხის ნომერი და სათაური, მაგ. `Fixes #123 - UDP buffer overflow when too many players are on the server`.

* **გამოიყენეთ `git commit --amend` ბოლო დავალებების შესაცვლელად.**

მაგალითად, თქვენ აიძულეთ თქვენი ცვლილება და ახლა CI იტყობინება, რომ ფორმატის შემოწმება ვერ მოხერხდა,
ახლა იმის ნაცვლად, რომ შევქმნათ ცალკე დაკომპლექტება, დავაფიქსიროთ დასრულება მანამდე,
გაუშვით `cargo fmt` ლოკალურად, გაუშვით `git add` და შემდეგ გაუშვით `git commit --amend` და `git push -f` არასრული დავალებების გამოსასწორებლად ახლის შექმნის ნაცვლად.
იგივე ეხება უფრო მცირე გამოსწორებებს, როგორიცაა მართლწერის შეცდომებს, რომლებიც თქვენს მიერ არის შემოღებული, შეასწორეთ დაშვება, სადაც დაშვებული იყო შეცდომა, ნაცვლად იმისა, რომ შექმნათ ახალი.
გაითვალისწინეთ, ზოგჯერ `cargo fmt` ფორმატირების წესები შეიცვალა, ამ შემთხვევაში ფორმატირებამ შეიძლება შეცვალოს კოდების ბაზის ნაწილები, რომლებსაც არ შეხებიხართ.
ამ შემთხვევაში, თავისუფლად გააკეთეთ ცალკეული ვალდებულება, რომელიც აფორმებს მთელ კოდბაზს.

**მინიშნება:** როგორც შენიშნეთ, თუ უკვე გადახვედით დისტანციურზე, თქვენ მოგიწევთ აიძულოთ თქვენი შეცვლილი ვალდებულება (ამისთვის ორივე `git push --force-with-lease` ან `git push -f` იმუშავებს.)

* ** რებაზირება კარგი გზაა შეცვალოთ თქვენი ვალდებულებები მოგვიანებით.**

იმ შემთხვევაში, თუ გრძნობთ, რომ რაღაც მომენტში შეაწუხეთ თქვენი კომიტები, შეგიძლიათ შეაჩეროთ ჩანაწერები და შეცვალოთ დავალების სახელები.
1. დათვალეთ რამდენ commit-ს შეიცავს თქვენი ფილიალი, მაგ. `git status`-ში.
2. გაუშვით `git rebase -i HEAD~N`, სადაც `N` არის დავალების რაოდენობა, რომელიც დაითვალეთ 1-ელ საფეხურზე.
3. მიჰყევით რედაქტორში მითითებებს. თქვენ შეგიძლიათ შეცვალოთ საკომისიოს სახელი ხაზში ტექსტის შეცვლით.
მაგალითად, იმისთვის, რომ ჩართოთ #2 და #3 კომიტი ერთ კომიტად, ჩაწერეთ `squash` დავალების #3-ის წინ, არ არის საჭირო შეცვალოთ დავალება #2.
4. აწარმოეთ `fmt` თქვენს ფილიალში (bash-ში) ყოველი შესრულებით
`git filter-branch -f --tree-filter "cargo fmt" $(git merge-base origin/master HEAD)..HEAD`

### სამაგისტრო ფილიალში ცვლილებების დაფიქსირება

ხშირად, როდესაც ფუნქციაზე მუშაობთ ერთ ან ორ დღეზე მეტხანს, შეიძლება შეამჩნიოთ, რომ თქვენი ფილიალი ჩამორჩება მთავარ ფილიალს.
საბედნიეროდ, თქვენ შეგიძლიათ დაეწიოთ ნებისმიერ ცვლილებას, რომელიც თქვენმა ფილიალმა გამოტოვა [მასტერზე ხელახალი ბაზისით](https://www.atlassian.com/git/tutorials/merging-vs-rebasing) შესაბამისად, თქვენ **არასდროს** გააერთიანოთ მასტერი თქვენს ფუნქციურ ფილიალში!

#### როგორ გადავაყენოთ ოსტატის თავზე

1. პირველ რიგში, დარწმუნდით, რომ არ გაქვთ დაუსრულებელი სამუშაო, ე.ი. ახალი ვალდებულების შექმნით.
2. გაუშვით `git fetch --all` ყველა უახლესი ცვლილების მისაღებად.
3. გაუშვით `git rebase origin/master` ხელახალი ბაზაზე დასაწყებად.
შეიძლება შეგხვდეთ ან არ შეგხვდეთ გაერთიანების კონფლიქტები, თუ არა, გადადით შემდეგ ეტაპზე.
თუ ასე მოიქცევით, მოგიწევთ კონფლიქტების მოგვარება. ეს ჩვეულებრივ წარმოიქმნება ბოლო ცვლილებების შედეგად
სამაგისტრო, რომელიც ეწინააღმდეგება საკუთარ ცვლილებებთან და ჯიტში, უნდა გითხრათ, რომელს ანიჭებთ უპირატესობას. მოგერიდებათ
ითხოვეთ დახმარება ჩვენს Discord-თან დაკავშირებით.
4. გაუშვით `git push -f` თქვენი ხელახალი ფუნქციების განშტოების გასააქტიურებლად. ეს უნდა იყოს ძალისმიერი ბიძგი, რადგან თქვენ შეცვალეთ არსებული ჩადენის ისტორია.

**მინიშნება:** გაუშვით `git status` თქვენი ფილიალის ამჟამინდელი მდგომარეობის სანახავად.

## მიიღეთ თქვენი წვლილი თამაშში

თქვენ შექმენით ფუნქციების ფილიალი, გააკეთეთ თქვენი ვალდებულებები, რა არის ახლა?
ახლა ფილიალი სხვა წევრებმა უნდა განიხილონ; ამისათვის თქვენ უნდა შექმნათ შერწყმის მოთხოვნა GitLab-ზე.

### შერწყმის მოთხოვნის (MR) შექმნა GitLab-ზე

1. როგორც კი თქვენი ფუნქცია მზად იქნება განსახილველად, შექმენით [MR GitLab](https://gitlab.com/groups/veloren/dev/-/merge_requests) თქვენი ფილიალიდან `your-nickname/your-branch-name``veloren/veloren/master`-მდე.
2. დარწმუნდით, რომ მონიშნეთ ყუთი *წაშალე წყაროს ფილიალი* MR-ში. იშვიათად არის იმის მიზეზი, რომ ტოტი შეინარჩუნოს მის შერწყმის შემდეგ.
მოგერიდებათ დაამატოთ დამატებითი ინფორმაცია აღწერილობაში.
გარდა იმ შემთხვევისა, როდესაც თქვენი ფილიალის ჩაბარების ისტორია არ შეიცავს სუფთა ვალდებულებებს აღწერითი სათაურებით,
თქვენი MR ჩაიშლება - შეგიძლიათ წინასწარ შეამოწმოთ *squash commits* ჩამრთველი, თუ გსურთ ეს მოხდეს.
3. გაგზავნეთ შეტყობინება ჩვენს Discord-ზე (თუ გაქვთ წვდომა `#programmers`-ზე ან სამუშაო ჯგუფის არხზე, სხვაგვარად `#new-contributors`-ში)
და ახსენეთ `@Code Reviewer` MR-ის ბმულით, ვინმე გადახედავს მას და იმუშავებს თქვენთან ერთად მის გაერთიანებაზე.

## ხელშემწყობი აქტივები

თუ აქამდე არასოდეს გიმუშავიათ git-ით და უბრალოდ გსურთ აქტივების შეტანა,
გამოაქვეყნეთ ისინი `#veloren-art`-ში ჩვენს Discord-ზე და მოითხოვეთ გამოხმაურება. დარწმუნდით, რომ ფლობთ აქტივებზე უფლებებს და ეთანხმებით, რომ ის საჯაროდ ხელმისაწვდომი იყოს [GPLv3](https://choosealicense.com/licenses/gpl-3.0/) ლიცენზიით.
**მინიშნება:** დამატებითი ინფორმაციისთვის ეწვიეთ [მხატვრების განყოფილებას](artists).

## თქვენი პირველი წვლილის შემდეგ

გილოცავთ თქვენს პირველ წვლილს და მადლობას გიხდით დახმარებისთვის!
თქვენი პირველი წვლილის შემდეგ თქვენ უნდა მიიღოთ `Contributor` როლი Discord-ზე, რომელიც გაძლევთ წვდომას მნიშვნელოვან არხებზე.