2012-07-17 29 views
32

Tamam, stackoverflow'ta bulabildiğim tüm yanıtları denedim, ancak görünüşe göre sorunumu çözebilecek bir şey yok. SVN tarafından bir git deposuna yapılan bir yama uygulamak istiyorum. Görünüşe göre, bunu yapmanın en kolay yolu 'git uygula' kullanmaktır, ancak bu işe yaramaz. svn ekini git deposuna uygulayın

$ head xxx_parser.patch Index: etc/grammar/JspParser.jjt 
--- etc/grammar/JspParser.jjt (revision 7704) 
+++ etc/grammar/JspParser.jjt (working copy) 

şimdi neden o dosya pmd/gramer/JspParser.jjt bulamıyorum şikayet vermez:

$ git apply --ignore-space-change --ignore-whitespace < xxx_parser.patch 


<stdin>:10: trailing whitespace. 
     FORCE_LA_CHECK = false; stdin:23: trailing whitespace. 

<stdin>:79: trailing whitespace 
. 
. 
. 
. 
error: pmd/grammar/JspParser.jjt: No such file or directory 
error: patch failed: pmd/pom.xml:251 
error: pmd/pom.xml: patch does not apply 

Bu xxx_parser.patch içeriği nedir?

Yamadaki yol doğru dizine işaret ediyor.

+0

Bir yama dosyasının birden fazla dosya için değişiklik yapabileceğini biliyorsunuz değil mi? Dosyanın başındaki dosyaya bakarak sadece size yamadaki ilk dosyayı göstereceğim. – asm

cevap

43

SVN tarafından oluşturulan yamaları uygulayarak birkaç sorunla karşılaştım. Doğrudan patch komutuyla herhangi bir subversion yaması uygulamanızı öneririm ve adı geçen yamanın başarıyla uygulandığını doğrulamak için git'i kullanın. Komut satırında çalıştırılabilir bir komut olarak patch varsa

$ patch -p0 < xxx_parser.patch 
$ git diff 
+0

Maalesef yukarıdaki komutu denediğimde şu hatayı alıyorum Onaylama başarısız oldu: (s && size), işlev savebuf, dosya /SourceCache/gpatch/gpatch-2/patch/util.c, satır 424. İptal tuzağı: 6 –

+0

[Sav] 'un eski sürümlerinde "_ \ dosya_sonunda yeni satır yok" (http://savannah.gnu.org/projects/patch/) ile ilgili hata olduğunu iddia ediyorum. Neyse ki, çözüldü. Sisteminizin [patch-2.7.1] ile güncel olduğundan emin olun (http://ftp.gnu.org/gnu/patch/). – emcconville

+0

Hat sonu sorunları durumunda (çok fazla satır değiştirildi) ikili seçeneği kullanmayı deneyin: patch --binary --no-backup-if-mismatch -p0 too

5

@emcconville cevap çalışır. Diğerleri için

:

  1. svn repo itibaren

    svn diff --git >> gitFormat.patch

  2. git senin git repo (Bu dosyayı kopyala)

    git apply gitFormat.patch

İlgili konular