Repozitoriya

**Repozitoriya** () — proqram təminatının mənbə kodunu, sənədlərini, resurslarını və tarixçəsini saxlamaq üçün istifadə olunan bir yerdir. **Repo** (qısa adı ilə) həm komanda şəklində işləmək üçün kodu ortaq saxlama məkanı kimi, həm də kodun müxtəlif versiyalarını izləmək üçün istifadə olunur. Kod repo-ları (məsələn, GitHub, GitLab, Bitbucket və s.) proqram inkişafı prosesində çox vacib bir rola malikdir.

## Əsas xüsusiyyətləri
#Versiya nəzarəti ()
#*Repo-larda proqram təminatının müxtəlif versiyalarını izləmək mümkündür. Bu, hər bir dəyişikliyin kim tərəfindən və nə vaxt edildiyini bilmək üçün vacibdir.
#*Kodun əvvəlki versiyalarına qayıtmaq, dəyişiklikləri müqayisə etmək və tarixçəyə baxmaq imkanı verir.
#Şaxələndirmə () 
#*Repozitoriyada şaxələndirmə () xüsusiyyəti ilə layihənin müxtəlif xüsusiyyətləri və ya yeniləmələri üzərində paralel işləmək mümkündür.
#*Şaxələr () layihənin fərqli versiyalarıdır və əsas () şaxəyə birləşdirilə bilər.
#Birlikdə İşləmə ()
#*Repozitoriyalar komanda ilə işləmək üçün ideal məkan yaradır. İnkişafçılar dəyişiklikləri push və pull edərək eyni layihə üzərində işləyə bilirlər.
#*Kodu nəzərdən keçirmək, şərhlər əlavə etmək və dəyişikliklər etmək üçün müxtəlif icazələr və alətlər mövcuddur.
#İcazə nəzarəti ()
#*Repozitoriyalarda istifadəçilərin müxtəlif səviyyələrdə icazələri olur. Bu, kodun təhlükəsizliyini və yalnız lazım olan şəxslərin müəyyən dəyişiklikləri etməsini təmin edir.
#İşlərin nəzərdən keçirilməsi ()
#*Komanda üzvləri bir-birlərinin kodunu nəzərdən keçirə bilər, təkliflər verə və düzəlişlər edə bilərlər.
#*Kod nəzərdən keçirmə alətləri () bu prosesin bir hissəsidir.
#Açar sözlər və şərhlər
#*Repozitoriyalarda kod haqqında məlumatlar, qeydlər, sənədlər və şərhlər saxlana bilər. Bu, gələcəkdə layihəni anlamaq və ya dəyişiklikləri asanlıqla izləmək üçün faydalıdır.

## Növləri
#Yerli repozitoriya ()
#*Proqram təminatı faylları lokal kompüterdə saxlanılır.
#*İstifadəçilər `Git` kimi versiya nəzarət alətlərindən istifadə edərək dəyişiklikləri lokal olaraq izləyə bilərlər.
#Uzaq repozitoriya ()
#*Proqram təminatının kodu internet üzərində serverdə saxlanılır və müxtəlif inkişafçılar uzaqdan bu repo ilə işləyə bilirlər.
#*Məsələn, GitHub, GitLab və Bitbucket kimi platformalar uzaq repo xidmətləri təklif edir.
#Mərkəzləşdirilmiş və paylanmış repozitoriyalar
#*Mərkəzləşdirilmiş repo — kod yalnız bir mərkəzi serverdə saxlanılır (məsələn, SVN).
#*Paylanmış repo — hər bir istifadəçinin lokal kompüterində tam repo nüsxəsi olur və hər kəs öz dəyişikliklərini müstəqil şəkildə edə bilir (məsələn, Git).

## Repozitoriya ilə iş prosesi
* Fork və ya Klonlama — uzaq repo-nu lokal kompüterə gətirmək üçün "*clone*" əmri ilə repo-nun nüsxəsini çıxarmaq.
* Şaxələndirmə () — yeni xüsusiyyət əlavə etmək və ya problemləri həll etmək üçün yeni bir branch yaratmaq.
* Dəyişiklik etmək və qeyd etmək () — kodu yeniləyərək dəyişiklikləri "*commit*" ilə repo-ya əlavə etmək.
* Dəyişiklikləri `push` etmək — lokal repo-dakı dəyişiklikləri uzaq repo-ya yükləmək.
* `Pull Request` və ya `Merge Request` göndərmək —  layihənin əsas koduna dəyişikliklərin birləşdirilməsi üçün kod nəzərdən keçirmə təklifi göndərmək.
* Birləşdirmək () — dəyişikliklərin əsas `branch`-ə birləşdirilməsi.

## Məşhur repozitoriya platformaları
*GitHub — ən populyar kod hostinq platformalarından biridir və geniş bir açıq mənbə icması ilə dəstəklənir.
*GitLab — layihə idarəetmə və CI/CD xüsusiyyətləri ilə təmin edilmiş güclü bir kod hostinq platformasıdır.
*Bitbucket — xüsusilə kiçik bizneslər və komandalar üçün kod hostinqi və layihə idarəetmə xüsusiyyətləri təklif edir.

Repozitoriyalar proqram təminatının hazırlanması və idarə edilməsində çox vacib bir vasitədir. Komanda şəklində məhsuldar işləmək, kodu izləmək və dəyişikliklərin tarixçəsini saxlamaq üçün mütləq istifadə olunmalıdır.

## Metadata
Metadata ikili artefaktı təsvir edir, artefaktın özündən ayrıca saxlanılır və istinad edilir və bir neçə əlavə istifadəyə malik ola bilər. Aşağıdakı cədvəl bəzi ümumi metadata növlərini və onların istifadəsini göstərir:

## İstinadlar