Kuruluşta, örneğin kuruluş dışı kullanıcılarla işbirliği yapmak için herhangi bir “ters dolaşma” işlemi var mı?


10

Kendi notlarımı / testlerimi / kodumu org'a yazmak ve sonra org-bable-tanglekaynak dosyaları üretmek için kullanmak istiyorum . Ancak, bu dosyaların tümü sürüm denetimine tabidir ve bu nedenle kuruluş ortamımın dışından değişebilir.

Birtakım srcbloklara sahip olmak ve daha sonra her biri sürüm kontrolüne bağlı olacak bir dizi farklı dosyaya karışmak istiyorum. Ama aynı zamanda, sürüm kontrolünden herhangi bir değişiklik yaptıktan sonra bu dosyaların her birini org dosyama "çözebilir".

Bunu yapmanın basit bir yolu var mı? Şimdi ile oynamayı düşünüyoruminsert-file-contents


Yapmak istediklerinize küçük bir örnek verebilir misiniz? Bir veya daha fazla kuruluş dosyasında kod bloklarınız olduğu ve bu blokların arapsağından oluşturulan dosya veya dosyaların org dosyalarındaki değişikliklerle orijinal bloklara ayrılmasını istediğiniz gibi görünüyor.
David D.

Esasen iş akışı şu şekilde olacaktır: (1) kuruluşta bazı okuryazar kodlar yazın. (2) bu kodu bir veya daha fazla dosyaya dolaştırın. (3) git bu dosyaları taahhüt eder. (4) öğle yemeğim (5) git meslektaşımın değişikliklerini çekin. (6) "ters dolaşma" bu değişiklikleri kuruluş dosyamdaki kod bloklarına geri döndürüyor. (7) goto (1).
RJTK

Yanıtlar:


6

Evet, öyle org-babel-detangle.

org-babel-detangle, etkileşimli derlenmiş Lisp işlevidir ob-tangle.el.

(org-babel-detangle &optional SOURCE-CODE-FILE)

Kaynak dosyadaki değişiklikleri orijinal haline Org dosyasına geçir. Bu, kod bloklarının, orijinal kod bloklarının bulunmasını sağlayan bağlantı yorumlarıyla karıştırılmasını gerektirir.

Çalıştırmak için commentsüstbilgi bağımsız değişkenini ayarlamanız gerekir link, örneğin,

#+begin_src ruby :tangle hello.rb :comments link
  puts 'hello'
#+end_src

daha sonra M-x org-babel-tanglekod bloğunu dışa aktarmak için kullanın , adlı yeni bir dosya hello.rboluşturulacak, aşağıdaki gibi benzer içeriğe sahip olmalıdır

~ $ cat hello.rb
# [[file:~/foo.org][No heading:1]]
puts 'hello'
# No heading:1 ends here
~ $

Son olarak, açık hello.rbEmacs, değişime hellokarşı hello worldve vadede M-x org-babel-detanglede hello.rbarabölgesine. Kuruluş dosyası güncellenecek

#+begin_src ruby :tangle hello.rb :comments link
  puts 'hello world'
#+end_src

Bu org-babel-detangle işlevinin nasıl kullanılacağı konusunda daha kesin olabilir misiniz (veya bir örnek verin). Ruby.rb için karışıklık ve kodu hafifçe değiştirdikten sonra M x org-babel-detangle kullanmak için yakut kodunu denedim ama bir hata var "org-babel-detangle: Yanlış tip argümanı: stringp, nil".
Lgen

@Lgen Cevabımı güncelledim. org-babel-detangleAmaç ve kullanımı anlamak için doktora okumayı unutmayın .
xuchunyang

Bu açıklama için teşekkürler. Kaynak kodunun ters karışıklığa izin vermek için emacs içinde düzenlenmesi gerektiği varsayımını anlamamıştım (kaynak kodunu değiştirmek için başka bir metin düzenleyicisi kullanıyordum). Şimdi beklendiği gibi çalışıyor.
Lgen

Bu güzel bir özellik, ama bulmayı umduğum gibi değil. Kendim dışında hiçbir şey ifade etmediklerinden # [[...]] yorumları gerçekten yapamıyorum. Bir bağlantı bloğuna, bağlantı yorumuna gerek kalmadan tüm dosyadan ayrıştırmak için açıklama eklemek mümkün müdür? Esasen sadece insert-file-contents?
RJTK

2

Orada da org-tanglesync daha senkronize etmenin daha basit bir yöntem vardır,org-babel-detangle

Esasen bir blok harici bir dosyaya dolaştırılırsa, bu blok her düzenlendiğinde harici dosya da kontrol edilir ve bir fark tespit edilirse, kullanıcıdan harici değişiklikleri reddetmesi veya org src bloğuna çekmesi istenir.

Bu ayrıca bir arabellekteki tüm karışık blokları otomatik olarak işlemek için işlevlere sahiptir. Umut ediyorum bu yardım eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.