2013-08-09 17 views
6

Tworzę łatkę svn diff, ale wygląda na to, że pliki obrazów nie są uwzględniane. Plaster zawierają podobne wiersze dla każdego pliku obrazu, tak jak pokazano poniżej:Dołącz plik obrazu w łatce svn diff

Index: crimgeoprofile/code/jquery/css/ui-lightness/images/animated-overlay.gif 
=================================================================== 
Cannot display: file marked as a binary type. 
svn:mime-type = application/octet-stream 
Index: crimgeoprofile/code/jquery/css/ui-lightness/images/animated-overlay.gif 
=================================================================== 
--- crimgeoprofile/code/jquery/css/ui-lightness/images/animated-overlay.gif (revision 1510040) 
+++ crimgeoprofile/code/jquery/css/ui-lightness/images/animated-overlay.gif (working copy) 

Używam następujące polecenie, aby utworzyć patch:

svn diff > test.diff 

Wszelkie sugestie, w jaki sposób mogę to pliki obrazu zostanie docenione.

Odpowiedz

0

pliki graficzne są coraz zawartych w diff jak zaznaczono liniami ze --- +++ ale i one są włączone jako całe pliki w łatce - wynika to po części z problemu sensownego wyświetlania zmian w danych binarnych, takich jak obrazy w formacie tekstowym - chyba że chciałbyś stron o różnicach heksadecymalnych (takich jak fc -b a.gif b.gif).

Więc powiedziano Ci, że pliki się zmieniły i od ciebie zależy, jak chcesz je porównać - w przypadku plików obrazów jednym z najlepszych porównań znaczących różnic jest ludzkie oko - nie spodziewałbyś się system kontroli rewizji, żeby móc ci powiedzieć "To było zdjęcie łysego mężczyzny marszczącego brwi, ale teraz jest to ładna rudowłosa cheerleaderka uśmiechnięta" zrobiłbyś?

+0

SVN nie może obecnie tworzyć zunifikowanych plików łat z danymi binarnymi. Jeśli sprawdzasz plik poprawki, tak jak w Visual Studio, nie ma tam danych binarnych. Dyskusja na temat tej brakującej funkcji na stronie dev Subversion: http://subversion.1072662.n5.nabble.com/Create-Apply-Patch-UTF-16-and-binary-support-td181079.html – Ron

+0

@Ron It nie jest tak, że SVN nie może tworzyć zunifikowanych plików diff plików binarnych, takich jak plik obrazu, ale raczej, że ujednolicony format diff nie zawiera żadnej metody reprezentowania różnic między dwoma plikami binarnymi. Ogólnie rzecz biorąc delta, w formacie tekstowym, prawdopodobnie będzie większa niż świeża kopia pliku, chyba że zmiana jest bardzo mała i zlokalizowana, a nawet wtedy dla skompresowanych formatów, takich jak jpeg, delta między plikami może być duża nawet dla zmiana. MPEG radzi sobie z tym przez a) używając bardzo specyficznego formatu dla ramek kluczowych ib) używając formatu binarnego dla delt. –

2

SVN nie obsługuje dołączania plików binarnych do plików różnic. Na marginesie: git obsługuje pliki binarne. Powstały patch wygląda następująco:

diff --git a/bin/windows/SDL_mixer.dll b/bin/windows/SDL_mixer.dll 
new file mode 100644 
index 0000000000000000000000000000000000000000..f48ee2da696f92b66940b91b52aa53c2 
GIT binary patch 
literal 160256 
zcmd?S4SZD9)i*kmOyYopCrYBxf<%o9l`2uFL_&=TgA|RT7>j7Ev^CX7sg%wregu+E 
z26K8G$kPW}+uD|hZFwrKv_*([email protected]~XNJW(<Ug6wVlm;iDl0WbXgJ_BoSD06*UQ 
z-h1DBFF(yWXYaMwUVE*z*Is+=k13j2?MQYw94`DHi#Z&%c=BJq{Qc}d<;Xr~#Ovoc 
zRu6jXl3M4jZ(VZNLl6HbYtG!qzCU-??5yw3`oRw#^JRVK!K}IdA7nlJgRDunPtThD 

Więc technicznie jest możliwe, to po prostu nie działa z SVN. Więc jeśli rozpaczliwie potrzebujesz pliku z łatką, w tym plików binarnych, pomyśl o sprawdzeniu svn przy użyciu git. To proste: git svn clone http://path/to/svn. Działa również podobnie z svn://.... Następnie możesz stworzyć różnicę git i zastosować tę różnicę do dowolnego celu. Cel nie musi być repozytorium git. git apply my.patch

+2

Subversion 1.9 umożliwia generowanie takich poprawek, jeśli użyjesz 'svn diff --git' zamiast zwykłego' svn diff' –

+1

@BertHuijben nawet z '--git' odmówi zmienienia plików binarnych. – npostavs

2

Z Suversion 1.9 można użyć --git flagę zawierać binarny treści pliku łaty, na przykład:

svn diff https://storage/svn/project/trunk --git -c 42 > patch-42.diff 

Subversion 1.8 mają już --git flagę, ale ignorować zawartość binarną z nim.

Powiązane problemy