
# Git

Rudel, PHP tabanlı Git işlemlerini Pitmaster üzerinden kullanır. Ana makinenin `git` ikilisini gerektirmez. Uzak depolara HTTP(S) veya SSH üzerinden erişilir.

Her yalıtılmış ortamın, aşağıdaki tüm Git iş akışlarında kullanılan tek bir dal adı vardır: `rudel/{sandbox-id}`.

## Yeni bir yalıtılmış ortama uzak depo klonlama

```bash
wp rudel create --name=feature-x --git=https://example.test/my-theme.git
```

Rudel yalıtılmış ortamı oluşturur, uzak depoyu yalıtılmış ortam dizininin içindeki `themes/my-theme` konumuna klonlar (dizin adı depo adıdır), varsayılan daldan `rudel/{id}` dalını oluşturur ve bu dala geçer. `--type=plugin` kullanılırsa kullanıma alınan öğe bunun yerine `plugins/my-theme` konumuna gider. Uzak depo, dizin ve temel dal daha sonra gönderme işlemlerinde kullanılmak üzere yalıtılmış ortama kaydedilir. Klonlama başarısız olursa yalıtılmış ortam tutulur ve komut bir uyarı yazdırır.

Kullanıma alınan öğe, `wp rudel push` için bir çalışma kopyasıdır. Mevcut sürümde yalıtılmış ortam bunu sunmaz ([11. sorun](https://github.com/inline0/rudel/issues/11)):

- Yalıtılmış ortam, `--theme` ile seçilen temayı veya ana makinenin etkin temasını sunar; tema, yalıtılmış ortam oluşturulurken ana makineden kopyalanır. `--theme`, ana makineye yüklenmiş bir temayı adlandırmalıdır. Bu nedenle kullanıma alınan öğe yalnızca depo adı bu kısa adla eşleştiğinde ve klon kopyalanan tema dizinine yazdığında sunulur.
- Eklentiler her zaman ana makinenin eklenti dizininden yüklenir; bu nedenle `--type=plugin` kullanıma alınan öğe hiçbir zaman çalışmaz.

## Bağlantılı çalışma ağaçları

Tema dizini bir Git deposu olan yalıtılmış ortamı klonladığınızda Rudel, dosyaları kopyalamak yerine yeni yalıtılmış ortam için bağlantılı bir çalışma ağacı oluşturur:

```bash
wp rudel create --name=feature-y --clone-from=feature-x-3be7
```

Çalışma ağacı `rudel/{new-id}` dalındadır. Rudel bunu yeni yalıtılmış ortamın meta verilerine; yalıtılmış ortam kimliği, içerik türü ve tema kısa adına dayalı açık bir çalışma ağacı adıyla kaydeder. Böylece aynı tema kısa adını kullanan iki yalıtılmış ortam çakışmaz. Yalıtılmış ortam yok edildiğinde çalışma ağacı kaldırılır ve dalı silinir.

`wp rudel cleanup --merged` yalnızca bu bağlantılı çalışma ağaçlarını dikkate alır. Bkz. [Temizleme](https://rudel.inline0.dev/tr/docs/features/cleanup).

## Değişiklikleri gönderme

```bash
wp rudel push feature-x-3be7 --message="Update checkout template"
```

`push` kullanıma alınan öğedeki tüm değişiklikleri kaydeder ve `rudel/{id}` dalını `origin` konumuna gönderir. Hiçbir değişiklik yoksa `No changes to push.` döndürür.

- Kayıtlı uzak depo yoksa `--git=<remote>` uzak depoyu ayarlar; ilk başarılı göndermeden sonra hatırlanır.
- `--dir=<dir>`, yalıtılmış ortam dizinine göreli dizini seçer; örneğin `themes/my-theme`. Varsayılan olarak `--git` tarafından kaydedilen dizin kullanılır; bu yoksa yalıtılmış ortam dizininin tamamı seçilir.
- `--message` varsayılan olarak `Update from Rudel sandbox` değerindedir.

PHP içinden `Rudel::push( $id, $remote_url, $message, $subdir )` aynı işlemi yapar ve `rudel_*_environment_push` kancalarını tetikler.

## Gönderim kimliği

Kullanıma alınan öğenin Git yapılandırmasında `user.name` veya `user.email` yoksa Rudel, `Rudel` ve `rudel@localhost` değerlerini yazar. Başka değerler kullanmak için `RUDEL_GIT_AUTHOR_NAME` ve `RUDEL_GIT_AUTHOR_EMAIL` değerlerini `wp-config.php` içinde tanımlayın.
