Çalışma ağaçları
Sohbetleri paralel olarak çalıştırmak için ChatGPT masaüstü uygulamasındaki Codex'te Git çalışma ağaçlarını kullanın
ChatGPT masaüstü uygulamasında çalışma ağaçları, Codex'in aynı projede birbirini etkilemeden birden fazla bağımsız sohbet çalıştırmasına olanak tanır. Git depolarında zamanlanmış görevler, devam eden çalışmalarınızla çakışmamaları için ayrılmış arka plan çalışma ağaçlarında çalışabilir. Sürüm denetimi kullanılmayan projelerde zamanlanmış görevler doğrudan proje dizininde çalışır. Ayrıca bir çalışma ağacında manuel olarak sohbet başlatabilir ve bir sohbeti Yerel ile Çalışma Ağacı arasında taşımak için Devretme özelliğini kullanabilirsiniz.
Çalışma ağacı nedir?
Çalışma ağaçları, altyapıda Git çalışma ağaçlarını kullandığından yalnızca bir Git deposunun parçası olan projelerde çalışır. Çalışma ağacı, deponuzun ikinci bir kopyasını ("kullanıma alınmış kopya") oluşturmanıza olanak tanır. Her çalışma ağacında deponuzdaki her dosyanın ayrı bir kopyası bulunur ancak hepsi commit'ler, dallar ve benzeri öğelerle ilgili aynı meta verileri (.git klasörü) paylaşır. Böylece birden fazla dalı paralel olarak kullanıma alıp bunlar üzerinde çalışabilirsiniz.
Terminoloji
- Yerel kullanıma alınmış kopya: Oluşturduğunuz depo. ChatGPT masaüstü uygulamasında bazen yalnızca Yerel olarak adlandırılır.
- Çalışma ağacı: ChatGPT masaüstü uygulamasında yerel kullanıma alınmış kopyanızdan oluşturulan bir Git çalışma ağacı.
- Devretme: Bir sohbeti Yerel ile Çalışma Ağacı arasında taşıyan akış. Codex, çalışmanızı bunlar arasında güvenli biçimde taşımak için gereken Git işlemlerini yürütür.
Neden çalışma ağacı kullanmalısınız?
- Mevcut Yerel kurulumunuzu bozmadan Codex ile paralel çalışın.
- Ön plandaki işinize odaklanırken arka plan çalışmalarını sıraya alın.
- İncelemeye, test etmeye veya daha doğrudan iş birliği yapmaya hazır olduğunuzda sohbeti daha sonra Yerel'e taşıyın.
Başlarken
Çalışma ağaçları bir Git deposu gerektirir. Seçtiğiniz projenin bir Git deposunda bulunduğundan emin olun.
"Çalışma Ağacı"nı seçin
Yeni sohbet görünümünde düzenleyicinin altındaki Çalışma Ağacı seçeneğini belirleyin. İsteğe bağlı olarak çalışma ağacının kurulum betiklerini çalıştırmak için bir yerel ortam seçin.
Başlangıç dalını seçin
Düzenleyicinin altında, çalışma ağacının temel alacağı Git dalını seçin. Bu,
main/masterdalınız, bir özellik dalı veya hazırlanmamış yerel değişiklikler içeren mevcut dalınız olabilir.İsteminizi gönderin
İsteminizi gönderdiğinizde Codex, seçtiğiniz dalı temel alan bir Git çalışma ağacı oluşturur. Codex varsayılan olarak "detached HEAD" durumunda çalışır.
Çalışmaya nerede devam edeceğinizi seçin
Hazır olduğunuzda doğrudan çalışma ağacında çalışmaya devam edebilir veya sohbeti yerel kullanıma alınmış kopyanıza devredebilirsiniz. Yerel'e veya Yerel'den devretme işlemi, sohbetinizi ve kodunuzu taşıyarak diğer kullanıma alınmış kopyada devam etmenize olanak tanır.
Yerel ile Çalışma Ağacı arasında çalışma
Çalışma ağaçları, yerel kullanıma alınmış kopyanıza büyük ölçüde benzer görünür ve aynı şekilde kullanılır. Aradaki fark, akışınızdaki konumlarıdır. Yerel'i ön plan, Çalışma Ağacı'nı ise arka plan olarak düşünebilirsiniz. Devretme, bir sohbeti bunlar arasında taşımanıza olanak tanır.
Altyapıda Devretme, çalışmayı iki kullanıma alınmış kopya arasında güvenli biçimde taşımak için gereken Git işlemlerini yürütür. Bu önemlidir çünkü Git, bir dalın aynı anda yalnızca tek bir yerde kullanıma alınmasına izin verir. Bir dalı çalışma ağacında kullanıma alırsanız aynı anda yerel kullanıma alınmış kopyanızda kullanıma alamazsınız; bunun tersi de geçerlidir.
Uygulamada iki yaygın yol vardır:
- Yalnızca çalışma ağacında çalışın. Bu yol, örneğin bir yerel ortam kurulum betiği kullanarak bağımlılıkları ve araçları yüklediğiniz için değişiklikleri doğrudan çalışma ağacında doğrulayabildiğiniz durumlarda en iyi sonucu verir.
- Sohbeti Yerel'e devredin. Sohbeti ön plana getirmek istediğinizde, örneğin değişiklikleri her zamanki IDE'nizde incelemek istediğinizde veya uygulamanızın yalnızca tek bir örneğini çalıştırabildiğinizde bunu kullanın.
Seçenek 1: Çalışma ağacında çalışma
Değişikliklerinizle yalnızca çalışma ağacında kalmak istiyorsanız sohbet başlığındaki Burada dal oluştur düğmesini kullanarak çalışma ağacınızı bir dala dönüştürün.
Buradan değişikliklerinizi kaydedebilir, dalınızı uzak deponuza gönderebilir ve GitHub'da bir çekme isteği açabilirsiniz.
Başlıktaki "Aç" düğmesini kullanarak IDE'nizi çalışma ağacında açabilir, tümleşik terminali veya çalışma ağacı dizininde ihtiyaç duyduğunuz başka herhangi bir aracı kullanabilirsiniz.
Bir çalışma ağacında dal oluşturursanız bu dalı yerel kullanıma alınmış kopyanız dâhil başka hiçbir çalışma ağacında kullanıma alamayacağınızı unutmayın.
Seçenek 2: Bir sohbeti Yerel'e devretme
Bir sohbeti ön plana getirmek istiyorsanız sohbet başlığında Devret seçeneğini belirleyip sohbeti Yerel'e taşıyın.
Bu yol; değişiklikleri her zamanki IDE pencerenizde okumak, mevcut geliştirme sunucunuzu çalıştırmak veya çalışmayı günlük olarak kullandığınız ortamda doğrulamak istediğinizde kullanışlıdır.
Codex, sohbeti çalışma ağacı ile yerel kullanıma alınmış kopyanız arasında güvenli biçimde taşımak için gereken Git adımlarını yürütür.
Her sohbet, zaman içinde aynı ilişkili çalışma ağacını korur. Sohbeti daha sonra yeniden bir çalışma ağacına devrederseniz Codex, kaldığınız yerden devam edebilmeniz için onu aynı arka plan ortamına döndürür.
Ters yönde de ilerleyebilirsiniz. Zaten Yerel'de çalışıyorsanız ve ön planı boşaltmak istiyorsanız sohbeti bir çalışma ağacına taşımak için Devret seçeneğini kullanın. Bu, siz dikkatinizi yerel olarak başka bir şeye yöneltirken Codex'in arka planda çalışmaya devam etmesini istediğinizde kullanışlıdır.
Devretme Git işlemlerini kullandığından .gitignore dosyanızın parçası olan dosyalar, Codex bunları .worktreeinclude ile yerel ve yönetilen bir çalışma ağacına kopyalamadığı sürece sohbetle birlikte taşınmaz.
İleri düzey ayrıntılar
Codex tarafından yönetilen ve kalıcı çalışma ağaçları
Sohbetler varsayılan olarak Codex tarafından yönetilen bir çalışma ağacı kullanır. Bunlar hafif ve tek kullanımlık olacak şekilde tasarlanmıştır. Codex tarafından yönetilen bir çalışma ağacı genellikle tek bir sohbete ayrılır ve sohbeti daha sonra yeniden çalışma ağacına devrederseniz Codex onu aynı çalışma ağacına döndürür.
Uzun ömürlü bir ortam istiyorsanız kenar çubuğundaki bir projenin üç noktalı menüsünden kalıcı bir çalışma ağacı oluşturun. Bu işlem, kendi başına bir proje olarak yeni bir kalıcı çalışma ağacı oluşturur. Kalıcı çalışma ağaçları otomatik olarak silinmez ve aynı çalışma ağacından birden fazla sohbet başlatabilirsiniz.
Codex'in çalışma ağaçlarını sizin için yönetme şekli
Codex çalışma ağaçlarını $CODEX_HOME/worktrees içinde oluşturur. Başlangıç commit'i, görevinizi başlattığınızda seçilen dalın HEAD commit'idir. Yerel değişiklikleri olan bir dal seçtiyseniz Codex kaydedilmemiş değişiklikleri de çalışma ağacına uygular. Çalışma ağacı bir dal olarak kullanıma alınmaz. detached HEAD durumundadır. Bu, Codex'in dallarınızı gereksiz öğelerle doldurmadan birkaç çalışma ağacı oluşturmasına olanak tanır.
Yok sayılan yerel dosyaları yönetilen çalışma ağaçlarına kopyalama
Yerel ve Codex tarafından yönetilen çalışma ağaçları bir Git kullanıma alma işleminden başlar; bu nedenle izlenen dosyalar zaten mevcuttur. Deponuz yeni bir çalışma ağacının ihtiyaç duyduğu yerel kurulum dosyalarını yok sayıyorsa depo köküne bir .worktreeinclude dosyası ekleyin ve Codex yönetilen bir çalışma ağacı oluşturduğunda kopyalanacak yok sayılan yolları veya .gitignore tarzı kalıpları listeleyin.
Bunu Git'in kasıtlı olarak yok saydığı .env, .env.local veya config/secrets.json gibi dosyalar için kullanın. Codex yalnızca .worktreeinclude ile eşleşen yok sayılmış dosyaları kopyalar; Git'in izlemediği diğer yerel dosyaları kopyalamaz. İzlenen dosyaları listelemeyin.
Codex, yok sayılmış bir AGENTS.override.md dosyasını yerel ve yönetilen çalışma ağaçlarına otomatik olarak kopyalar; bu nedenle onu .worktreeinclude içinde listelemeniz gerekmez.
# .worktreeinclude
.env
.env.local
config/secrets.jsonCodex kaynak sembolik bağlantılarını atlar ve yeni kullanıma alınmış kopyada zaten var olan dosyaların üzerine yazmaz. Bu davranış, komut satırından kendiniz oluşturduğunuz uzak çalışma ağaçları veya Git çalışma ağaçları için değil, ChatGPT masaüstü uygulamasının yerel ve yönetilen çalışma ağaçları için geçerlidir.
Dal sınırlamaları
Codex'in bir çalışma ağacındaki bazı işleri tamamladığını ve Burada dal oluştur seçeneğini kullanarak çalışma ağacında bir feature/a dalı oluşturduğunuzu varsayalım. Şimdi bunu yerel kullanıma alınmış kopyanızda denemek istiyorsunuz. Dalı kullanıma almaya çalışırsanız şu hatayı alırsınız:
fatal: 'feature/a' is already used by worktree at '<WORKTREE_PATH>'Bunu çözmek için çalışma ağacında feature/a yerine başka bir dalı kullanıma almanız gerekir.
Dalı yerel olarak kullanıma almayı planlıyorsanız aynı dalı aynı anda her iki yerde de kullanıma almaya çalışmak yerine sohbeti Yerel'e taşımak için Devretme özelliğini kullanın.
Bu sınırlama neden var?
Git, aynı dalın aynı anda birden fazla çalışma ağacında kullanıma alınmasını engeller çünkü bir dal, anlamı bir çalışma ağacının “mevcut kullanıma alınmış durumu” olan tek bir değiştirilebilir referansı (refs/heads/<name>) temsil eder.
Bir dal kullanıma alındığında Git, dalın HEAD'ini ilgili çalışma ağacının sahipliğinde kabul eder ve commit, sıfırlama, yeniden temellendirme ve birleştirme gibi işlemlerin bu referansı iyi tanımlanmış ve sıralı bir şekilde ilerletmesini bekler. Birden fazla çalışma ağacının aynı dalı eşzamanlı olarak kullanıma almasına izin verilmesi, hangi çalışma ağacındaki işlemlerin dal referansını güncellediği konusunda belirsizliklere ve yarış durumlarına yol açarak commit'lerin kaybolmasına, tutarsız indekslere veya çakışmaların nasıl çözüleceğinin belirsizleşmesine neden olabilir.
Git, çalışma ağacı başına tek dal kuralını uygulayarak her dalın tek bir yetkili çalışma kopyasına sahip olmasını garanti ederken diğer çalışma ağaçlarının detached HEAD'ler veya ayrı dallar üzerinden aynı commit'lere güvenle başvurmasına izin verir.
Çalışma ağacı temizliği
Çalışma ağaçları çok fazla disk alanı kaplayabilir. Her birinin kendi depo dosyaları, bağımlılıkları, derleme önbellekleri ve benzeri öğeleri vardır. Bu nedenle ChatGPT masaüstü uygulaması, çalışma ağacı sayısını makul bir sınırda tutmaya çalışır.
Codex varsayılan olarak en son kullanılan, Codex tarafından yönetilen 15 çalışma ağacını tutar. Disk kullanımını kendiniz yönetmeyi tercih ederseniz bu sınırı değiştirebilir veya ayarlardan otomatik silmeyi kapatabilirsiniz.
Codex hâlâ önemli olan çalışma ağaçlarını silmekten kaçınmaya çalışır. Codex tarafından yönetilen çalışma ağaçları şu durumlarda otomatik olarak silinmez:
- Sabitlenmiş bir sohbet ona bağlıysa
- Sohbet hâlâ devam ediyorsa
- Çalışma ağacı kalıcı bir çalışma ağacıysa
Codex tarafından yönetilen çalışma ağaçları şu durumlarda otomatik olarak silinir:
- İlişkili sohbeti arşivlediğinizde
- Codex'in yapılandırdığınız sınır içinde kalmak için eski çalışma ağaçlarını silmesi gerektiğinde
Codex, yönetilen bir çalışma ağacını silmeden önce üzerindeki çalışmanın anlık görüntüsünü kaydeder. Çalışma ağacı silindikten sonra bir sohbeti açarsanız geri yükleme seçeneğini görürsünüz.
Sık sorulan sorular
Çalışma ağaçlarının nerede oluşturulacağını denetleyebilir miyim?
Evet. Codex, yönetilen çalışma ağaçlarını varsayılan olarak $CODEX_HOME/worktrees
altında oluşturur. Başka bir konum seçmek için Ayarlar > Çalışma Ağaçları bölümünü açın ve
Çalışma ağacı kökü ayarını değiştirin.
Bir sohbeti Yerel ile Çalışma Ağacı arasında taşıyabilir miyim?
Evet. Bir sohbeti yerel kullanıma alınmış kopyanız ile bir çalışma ağacı arasında taşımak için sohbet başlığındaki Devret seçeneğini kullanın. Codex, sohbeti ortamlar arasında güvenli biçimde taşımak için gereken Git işlemlerini yürütür. Bir sohbeti daha sonra yeniden çalışma ağacına devrederseniz Codex onu aynı ilişkili çalışma ağacına döndürür.
Bir çalışma ağacı silinirse sohbetlere ne olur?
Temeldeki çalışma ağacı dizini silinse bile sohbetler geçmişinizde kalabilir. Codex tarafından yönetilen çalışma ağaçlarında Codex, çalışma ağacını silmeden önce bir anlık görüntü kaydeder ve ilişkili sohbeti yeniden açarsanız onu geri yüklemeyi önerir. Kalıcı çalışma ağaçları, ilişkili sohbetlerini arşivlediğinizde otomatik olarak silinmez.