Ana içeriğe geç

kule new

Bir görev açar: ajanların ve komutların gerçek klasöre dokunmadan içinde çalıştığı, bir klasörün copy-on-write (yazınca kopyala) kopyası.

Kullanım​

kule new [OPTIONS] <WORKSPACE>

Açıklama​

Görev, Kule'nin iş birimidir. kule new bir klasör (çalışma klasörü, workspace) alır ve onun bir kopyasını Kule'nin ev klasöründe, <home>/tasks/<id>/w/<klasör adı> altında oluşturur. Görevle yaptığınız her şey bu kopyada olur: kule run ve kule exec onu değiştirir, kule status onu çalışma klasörüyle karşılaştırır ve değişiklikleri geri yazan yalnızca kule commit'tir.

Dosya sistemi destekliyorsa kopya reflink ile yapılır: macOS'ta APFS klonları, Linux'ta Btrfs ve XFS üzerinde FICLONE. Reflink ile yapılan bir kopya disk bloklarını orijinaliyle paylaşır; bu yüzden büyük bir klasörde bile hızlıdır ve dosyalar değişene kadar yer kaplamaz. Reflink desteği olmayan bir dosya sisteminde (örneğin ext4) Kule düz bir kopyaya geri döner; bu kopya klasörün tam boyutu kadar yer kaplar. Bkz. Görevler ve kopyalar.

Klasör her şey olabilir: bir git deposu, bir not kasası, bir fotoğraf ya da fatura klasörü. Kule'nin git'e ihtiyacı yoktur. Klasör bir git deposuysa Kule onun .git'ini de anlar (bkz. Git).

Görev açılırken Kule ayrıca:

  • kopyadaki .env dosyalarında gizli değere benzeyen değerleri maskeler (bkz. Gizli değerler);
  • klasörün manifest dosyalarına (Cargo.toml, package.json, .csproj, …) bakarak, yanında duran ve derlemede kullandığı projeleri (örneğin ../shared) arar. Kule bir çalışma klasörünün yanındaki projeleri sandbox'tan gizler; bu yüzden her birini size söyler ve kule reveal add ile salt okunur olarak nasıl açacağınızı gösterir.

Aynı klasörde ya da başkalarında istediğiniz kadar görev açabilirsiniz. Görevler birbirlerinin işini asla görmez; Kule aynı şeyleri değiştirdikleri yerleri size söyler.

kule new çalışma klasörüne dokunmaz.

Argümanlar​

AdZorunluAnlamı
WORKSPACEevetKopyalanacak klasör. Göreli bir yol geçerli dizinden itibaren alınır. Bağlantılar (link) gerçek klasöre kadar izlenir.

Seçenekler​

SeçenekDeğerVarsayılanAnlamı
--homeyol~/.kuleKule'nin ev klasörü (KULE_HOME ile de verilebilir). Bkz. genel seçenekler.

Örnekler​

Bir depo üzerinde görev açmak:

$ kule new ~/code/app
task 3422f830 · copy at ~/.kule/tasks/3422f830/w/app

Depo olmayan bir klasörde görev açmak:

$ kule new ~/notes
task 40ac70b8 · copy at ~/.kule/tasks/40ac70b8/w/notes

Kimliği bir betikte saklamak:

TASK=$(kule new ~/code/app | awk '{print $2}')
kule exec "$TASK" -- npm test

Yanındaki bir projeden derlenen bir klasör:

$ kule new ~/code/web
task 5e6f7a8b · copy at ~/.kule/tasks/5e6f7a8b/w/web
builds from /Users/me/code/shared, which its tasks cannot read: kule reveal add '/Users/me/code/shared'

Çıktı​

SatırAnlamı
task <id> · copy at <path>Yeni görevin kimliği (diğer tüm komutlarda bunu kullanın) ve kopyasının yeri.
builds from <path>, which its tasks cannot read: kule reveal add '<path>'Klasörün manifest dosyalarının adını verdiği, sandbox'tan gizli bir proje. Bu klasörün görevlerinin onu okuyabilmesi için gösterilen komutu çalıştırın.

Hatalar ve çözümleri​

MesajNe yapmalı
kule: <path>: No such file or directory (os error 2)Klasör yok. Yolu kontrol edin.
kule: <path> is not a directoryDosya değil, bir klasör verin.
kule: Kule's home <home> is inside the workspace, so the copy would contain itselfKule'nin ev klasörünü içeren bir klasörün (örneğin ev dizininizin tamamının) kopyasını istediniz. İçindeki bir klasörü seçin ya da Kule'nin ev klasörünü --home ile başka yere taşıyın.

Uygulamada​

New task… düğmesine tıklayın (Mod+N) ve bir klasör seçin. Henüz görev yoksa ilk açılış ekranı sizden bir klasör ister. Bkz. Uygulamada ilk göreviniz.

Ayrıca bakın​