Söylemek mümkün mü patchüretmek için değil .origve .rejdosyalar? Bu yamanın bunları yaratması son derece can sıkıcı buluyorum.
Söylemek mümkün mü patchüretmek için değil .origve .rejdosyalar? Bu yamanın bunları yaratması son derece can sıkıcı buluyorum.
Yanıtlar:
Eğer herhangi bir seçeneği sunan değilseniz patchdışında -pNbir yama temiz uygulamak başarısız olduğunda, sadece bu dosyaları oluşturur.
Bu nedenle, seçeneklerden biri bozuk yamalar oluşturmayı (veya kabul etmeyi) durdurmaktır. :)
Gerçek dünyada, bu bir özellik. patch(1)Özgün dosyaya bir yama segmenti uygulanamadığı zaman , geçici orijinal dosya kopyasını kalıcı olarak kaydeder *.orig, reddedilen segmenti döker ve *.rejyama segmentlerini uygulamaya devam eder. Fikir, *.rejparçayı ve parçaları yamalanmış dosyaya kopyalayarak dosyayı açıp yama işlemini manuel olarak tamamlayabilmenizdir. *.origYama işlemi yanlışlıkla bir şey virane zaman dosya da yararlı olabilir ve bunu düzeltmek için orijinal sürüme bakmanız gerekir.
Her zaman *.rejve *.origdosyalarından gelen metinlerle kötü bir düzeltme yapmıyorum , ancak onlara ihtiyacım olması durumunda onlara sahip olmak güzel.
Kötü bir düzeltme ekini düzelttikten sonra, işleri hızlı bir şekilde temizlemek için aşağıdaki komut dosyasını proje kökünde çalıştırıyorum:
#!/bin/bash
find . '(' \
-name \*-baseline -o \
-name \*-merge -o \
-name \*-original -o \
-name \*.orig -o \
-name \*.rej \
')' -delete
Buna cleanup-after-bad-patchuzun isim kısmen ihtiyaç duyduğunuz dosyaları kaldırabileceğinden, yanlışlıkla yanlışlıkla çalıştırılmasını garanti ediyorum. Dürüst olmak gerekirse, normalde yazarak çalıştırıyorum cleanTabEnter, bu komut dosyasını PATHgeliştirme makinelerimde bulmak için yeterli .
Kontrol ettiği ek desenler, bir birleştirme işlemi sırasında aynı sorunla karşılaştığında, sürüm kontrol sistemimin çıktısı olan dosyalar içindir . VCS / SCM araçlarınız için ayarlamak isteyebilirsiniz .
Düzeltme ekinin yedek üretmemesini söylemek için -bve --backup-...seçeneklerini kaldırın .
.rejDosya oluşturmama talimatını -r -vermek için komuta seçenek ekleyin .
GNU patch 2.6mac üzerinde çalışıyor ok belki deneyin-r /dev/null
Bu --no-backup-if-mismatchseçenek ".orig" dosyalarından kaçınır.
Ayrıca --merge, bir dosya içi çakışma oluşturan seçeneği denemek isteyebilirsiniz .
Her durumda, birleştirme ezici hale gelirse hızlı bir şekilde iyi bir duruma dönmenin bir yoluna sahip olmalısınız.
Ben -r -adlandırılmış reddetme dosyaları oluşturmak neden v2.5.4 yama ile sıkışmış -.
Bunu buldum --reject-file=yani boş değer çıkış koduyla başarısız olmasına yama neden 2 EĞER bir dosyayı reddetmek yazmaya çalışır. Reddetme yoksa, beklendiği gibi çalışır. Eski yama sürümü için tam bir çözüm olmasa da, bazı durumlarda bu kabul edilebilir veya istenebilir.
Ben gelebilir en iyi (kuşkusuz halının altına kir süpürme yolu) kullanıyor -r <tmpfile>, yani:
# patch -r /tmp/deleteme.rej -i patchfile filetobepatched
v2.5.8 sürümünden beri dosyayı -r -gerçekten oluşturur -.
yama -p1 -B / dev / null -r - <dosya.patch
-Bbayrak komutunuzdan göründüğü gibi *.origçıktıyı göndermez /dev/null. Normal kullanıcılar gibi adlarda dosyalara yazamazlar /dev/nullfoo.cpp. Bunu kök olarak yaparsanız, /devbunun yerine ağacınızda önemsiz olur . İkincisi, dosyayı -r -bastırmaz *.rej. Bu sadece sahte -Bbayrak nedeniyle hata , geçerli dizinde adlı bir dosya oluşturmak olan gerçekten olmadan ne yapacağını göstermesini durdurur çünkü görünüyor . -B-
man patch: "-r Reddedilenleri varsayılan .rej dosyası yerine rejectfile dosyasına koy. Rejectfile - olduğunda reddetmeyi reddet."