Bonjour,
je me connecte à un serveur SVN 1.7 via l'API SVNKit version 1.7 alpha 2.
J'ai un répertoire local dans lequel j'ai fait un checkout du serveur via tortoiseSVN, et je récupère mes fichiers penardou.
Dans mon répertoire checkouté, je modifie de manière externe un fichier sous contrôle de version.
Maintenant si je commit mon fichier via tortoiseSVN, tout se passe bien.
Si je commit mon fichier via SVNKit, je récupère cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 org.tmatesoft.svn.core.SVNException: svn: E200014: Checksum mismatch for 'C:\HOMESVN\webMethods\flux\ALFAS_CANONICAL.zip'; expected: '$md5 $be4b397919cd79eb3fa932c5cbf994ef', actual: '$md5 $f24cfb58652df74502f438d019c1844a'
Je sais bien que mon API est une version alpha, mais quand même, je ne parviens pas à expliquer cette différence de comportement entre tortoise et SVNKit...
Et puis d'abord c'est quoi ce checksum mismatch? si je commit, c'est bien qu'il y a des changements, alors qu'y a-t-il à vérifier? le transfert du fichier???
Voici mon code java:
Et le programme plante bien sur l'appel svncm.getCommitClient().doCommit de la méthode "commit"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public class SVNPackageCommit { static final String svnPath = "C:/HOMESVN/webMethods/flux/"; private static String login = "login"; private static String password = "mot de passe"; private static String sUrl = "adresse"; private static SVNClientManager svncm = SVNClientManager.newInstance(); public static void main(String[] args) throws SVNException{ ISVNAuthenticationManager authManager = new BasicAuthenticationManager(login, password ); SVNRepositoryFactoryImpl.setup(); SVNURL url = SVNURL.parseURIDecoded(sUrl); SVNRepository repository = SVNRepositoryFactory.create( url, null ); repository.setAuthenticationManager(authManager); File canonic = new File("C:/chemin/ALFAS_CANONICAL.zip"); commit(canonic, false, "v1.62\nIntégration initiale"); } private static SVNCommitInfo commit( File wcPath , boolean keepLocks , String commitMessage ) throws SVNException { return svncm.getCommitClient().doCommit( new File[] { wcPath } , keepLocks , commitMessage , null, null, false, false, null ); } }
Si quelqu'un a une idée, je suis preneur, parce que là je suis largué (et l'alternative consiste à me taper au moins 500 commits à la main)
Edit: ce n'est pas systématique, beaucoup de commits fonctionnent bien en fait... du coup je vais faire manuellement ceux qui ne marchent pas (environ 1 sur 5). M'enfin c'est chiant quand même
Edit bis: une fois que j'ai commité un fichier manuellement, je n'ai plus JAMAIS d'erreur sur ce même fichier, quels que soient le nombre de commits sur ce même fichier.
Je précise pour ceux qui se posent des questions sur ce que je fais que j'initialise un repository SVN en réunissant les versions des fichiers depuis un autre serveur de stockage (d'où les commits en masse)
Partager