2010-05-14 14 views
10

Mam dwie kopie strony, jedna to kopia produkcyjna, a druga to kopia rozwojowa. Ostatnio dodałem wszystko w produkcji do repozytorium subversion hostowanego na naszym serwerze kopii zapasowych Linux. Stworzyłem tag aktualnej wersji i skończyłem.Subversion wariuje na mnie!

Następnie skopiowałem kopię rozwojową kopii roboczej (na mojej lokalnej maszynie, na której wszystko zostało sprawdzone). Zmieniło się tylko 10-20 plików, jednak kiedy używam SVN-u do wykonania polecenia, mówi, że każdy plik się zmienił. Wygenerowany plik diff pokazuje subwersję usuwającą wszystko i zastępującą ją nową wersją (która jest dokładnie taka sama).

Co się dzieje? Jak mogę to naprawić?

Przykładem diff:

Index: C:/Users/jhollon/Documents/Visual Studio 2008/Projects/saloon/trunk/components/index.html 
=================================================================== 
--- C:/Users/jhollon/Documents/Visual Studio 2008/Projects/saloon/trunk/components/index.html (revision 5) 
+++ C:/Users/jhollon/Documents/Visual Studio 2008/Projects/saloon/trunk/components/index.html (working copy) 
@@ -1,4 +1,4 @@ 
-<html> 
-<body bgcolor="#FFFFFF"> 
-</body> 
+<html> 
+<body bgcolor="#FFFFFF"> 
+</body> 
</html> 
\ No newline at end of file 
+2

To brzmi jak problem z [newlines] (http://en.wikipedia.org/wiki/Newline): może w jakiś sposób zostały przekształcone w CRLF? – Veeti

+0

Myślę, że to problem końca linii. Zobacz różnicę za pomocą narzędzia, które pokazuje znaczniki końca linii, a zobaczysz, że są różne.:) – mihi

+0

Najszybszym sposobem ustalenia istnienia końca linii jest wyprowadzenie wyjścia przez 'od-c', a następnie wyszukanie" r "\ r" –

Odpowiedz

8

To chyba niedopasowanie linia kończy. Ustaw właściwość svn:eol-style=native dla wszystkich plików.

http://svnbook.red-bean.com/en/1.5/svn.advanced.props.file-portability.html#svn.advanced.props.special.eol-style

Można mieć Subversion ustawić tę właściwość na wszystkich nowych plików domyślnie:

http://svnbook.red-bean.com/en/1.5/svn.advanced.props.html#svn.advanced.props.auto

Oto co jest w moim ~/.subversion/config:

enable-auto-props = yes 

### Section for configuring automatic properties. 
[auto-props] 
### The format of the entries is: 
### file-name-pattern = propname[=value][;propname[=value]...] 
### The file-name-pattern can contain wildcards (such as '*' and 
### '?'). All entries which match will be applied to the file. 
### Note that auto-props functionality must be enabled, which 
### is typically done by setting the 'enable-auto-props' option. 
*.c = svn:eol-style=native 
*.cpp = svn:eol-style=native 
*.h = svn:eol-style=native 
# *.dsp = svn:eol-style=CRLF 
# *.dsw = svn:eol-style=CRLF 
*.sh = svn:eol-style=native;svn:executable=* 
*.txt = svn:eol-style=native 
*.png = svn:mime-type=image/png 
*.jpg = svn:mime-type=image/jpeg 
*.jpeg = svn:mime-type=image/jpeg 
Makefile = svn:eol-style=native 
*.tmpl = svn:eol-style=native 
*.gif = svn:mime-type=image/gif 
*.t = svn:eol-style=native;svn:executable=* 
*.pm = svn:eol-style=native 
*.pl = svn:eol-style=native;svn:executable=* 
*.cgi = svn:eol-style=native;svn:executable=* 
*.js = svn:eol-style=native;svn:mime-type=application/x-javascript 
*.dtd = svn:eol-style=native;svn:mime-type=application/xml-dtd 
*.txt = svn:eol-style=native;svn:mime-type=text/plain 
*.html = svn:eol-style=native;svn:mime-type=text/html 
*.yicf = svn:eol-style=native 
*.xml = svn:eol-style=native;svn:mime-type=text/xml 
*.sgml = svn:eol-style=native;svn:mime-type=text/sgml 
*.xul = svn:mime-type=application/vnd.mozilla.xul+xml 
*.tt = svn:eol-style=native 
+0

To jest to, nowa wersja miała/n, a stary miał/r/n – Malfist

-1

rozwiązanie krótkoterminowe (aby sprawdzić różnice między dwiema wersjami): sprawdź dwie wersje do porównania w dwóch oddzielnych katalogach es i porównaj katalogi z zewnętrznym narzędziem do porównywania (meld in linux, winmerge w oknach). Narzędzia te można skonfigurować tak, aby ignorowały różnice między końcami linii.

Edycja: do końca, należy rozwiązanie David M. (nie wiedział, że SVN mógłby zarządzać ...)

+0

Yikes, nie twórz haków Subversion, żeby zrobić ze znakami EOL. Możesz wyraźnie to, co chcesz. 'svn: eol-style = native' jest właściwym wyborem, chyba że masz dobry powód, aby zrobić coś innego. –

0

widzę używasz Visual Studio, więc może ma to związek z kodowaniem pliku ? Miałem dziwne problemy z kodowaniem plików źródłowych VS w różny sposób na dwóch różnych komputerach, mimo że maszyny mają te same ustawienia języka i kultury. W VS źródła wyglądają dokładnie tak samo, ale SVN widzi nieprzetworzone pliki ...

Otwórz dwie wersje w edytorze, który nie wie nic o Unicode lub kodowaniu (myślę, że użyłem Notatnika?) I zobacz, czy są różne. Pierwsza linia pliku zawiera kod, który wskazuje, jaki rodzaj kodowania jest używany. Nie mam pojęcia, jak interpretować ten kod, ale przynajmniej będziesz w stanie stwierdzić, czy są one różne.

Dostępne są opcje w menu Narzędzia -> Opcje -> Środowisko -> Dokumenty sterujące kodowaniem.

+0

Właściwie to nie używam visual studio, to właśnie zostało umieszczone w tym katalogu, ponieważ tam zapisuję wszystkie moje projekty. W rzeczywistości używa programu Dreamweaver – Malfist

0

Wygląda na to, że to pytanie jest już dobrze odebrane (styl EOL). Chciałem tylko dodać jeszcze jedną rzecz, która może wywołać taki problem: Tabs vs Spaces. Jeśli twój edytor tekstu lub IDE używa spacji do wcięcia, a ktoś inny w twoim zespole używa Tabs, SVN zobaczy wiele zmian w plikach, ale nie "zobaczy" zmiany.