2010-05-14 4 views
10

J'ai deux copies d'un site, l'une est la copie de production, et l'autre est la copie de développement. J'ai récemment ajouté tout dans la production à un dépôt subversion hébergé sur notre serveur de sauvegarde Linux. J'ai créé une balise de la version actuelle et j'ai terminé. J'ai ensuite copié la copie de développement de la copie de production (sur ma machine locale où tout a été extrait). Il ya seulement 10-20 fichiers modifiés, cependant, quand j'utilise tortoise SVN pour faire un commit, il dit que chaque fichier a changé. Le fichier diff généré montre subversion en supprimant tout, et en le remplaçant par la nouvelle version (qui est exactement le même).Subversion panique sur moi!

Que se passe-t-il? Comment je le répare?

Un exemple 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

Cela ressemble à un problème avec [newlines] (http://en.wikipedia.org/wiki/Newline): peut-être qu'ils ont été convertis en CRLF en quelque sorte? – Veeti

+0

Je suppose que c'est un problème de fin de ligne. Voir le diff avec un outil qui montre les marques de fin de ligne et vous verrez ceux qui sont différents.:) – mihi

+0

Le moyen le plus rapide de vérifier l'existence d'un problème de fin de ligne est de diriger la sortie par 'od -c' puis de chercher le témoin' \ r' –

Répondre

8

Il est probablement un décalage de fin de ligne. Définissez la propriété svn:eol-style=native sur tous vos fichiers.

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

Vous pouvez avoir Subversion définir cette propriété sur tous les nouveaux fichiers par défaut:

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

Voici ce qui est dans mon ~/.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

Voilà, la nouvelle version a/n et la old had/r/n – Malfist

-1

solution à court terme (pour vérifier le diff entre les deux versions): consultez les deux versions à comparer dans deux directori séparés es, et comparez les répertoires avec un outil de comparaison externe (fusionner sous linux, winmerge sous windows). Ces outils peuvent être configurés pour ignorer les différences de fin de ligne.

Edit: pour le reste, utiliser la solution de David M (ne savait pas SVN pouvait gérer que ...)

+0

Yikes, ne créez pas de hooks Subversion pour piéger des caractères EOL. Vous pouvez explicitement ce que vous voulez. 'svn: eol-style = native' est le bon choix sauf si vous avez une bonne raison de faire autre chose. –

0

Je vois que vous utilisez Visual Studio, alors peut-être qu'il a à faire avec l'encodage de fichiers ? J'ai eu des problèmes étranges avec les fichiers source d'encodage VS différemment sur deux machines différentes, même si les machines ont les mêmes paramètres de langue et de culture. Dans VS, les sources se ressemblent exactement, mais SVN voit les fichiers bruts ...

Ouvrez les deux révisions dans un éditeur qui ne sait rien sur Unicode ou l'encodage (je pense que j'ai utilisé le Bloc-notes?), Et voir si elles sont différents. La première ligne du fichier contient un code qui indique le type d'encodage utilisé. Je n'ai aucune idée de la façon d'interpréter ce code, mais au moins, vous serez en mesure de dire si elles sont différentes.

Il existe des options dans Outils -> Options -> Environnement -> Documents qui contrôlent l'encodage.

+0

En fait, je n'utilise pas le studio visuel, il a juste été mis dans ce répertoire parce que c'est là que je sauvegarde tous mes projets. Il est en train d'utiliser avec Dreamweaver – Malfist

0

On dirait que cette question est déjà bien répondu (style EOL). Je voulais juste ajouter une autre chose qui peut déclencher un problème comme celui-ci: Tabs vs Spaces. Si votre éditeur de texte ou votre IDE utilise des espaces pour indenter, et que quelqu'un d'autre dans votre équipe utilise des tabulations, SVN verra beaucoup de changements de fichiers, mais vous ne verrez pas le changement.

Questions connexes