Question

Je veux que subversion valide un fichier même s’il n’a pas été modifié. Y a-t-il un moyen de le faire?

Était-ce utile?

La solution

Si vous souhaitez que le contenu du fichier reste inchangé (ce qui signifie que vous ne pouvez pas simplement changer les espaces comme le suggère Johnstok), vous pouvez toujours modifier l'une des propriétés du fichier.

par exemple.

svn propset dummyproperty 1 yourfile
svn commit yourfile

Cela effectuera une validation sans avoir à changer le fichier.

Assurez-vous de ne pas utiliser l’une des propriétés spéciales svn: . Tout le reste devrait aller.

Modifier: Un certain nombre d'autres affiches ont demandé pourquoi quelqu'un voudrait le faire. Les personnes qui ont marqué cette réponse ont également les mêmes préoccupations.

Je ne peux pas parler pour l'affiche d'origine, mais je l'ai déjà utilisé lorsque l'on tente de synchroniser automatiquement les activités d'un référentiel Visual Sourcesafe avec un référentiel de sous-version.

Autres conseils

Quant à savoir pourquoi on aimerait faire des commits forcés. J'ai vu des cas où quelqu'un utilisait un message de commit incorrect ou incertain. C'est bien si vous pouvez effectuer un commit forcé, où vous pouvez corriger cette erreur. Ainsi, le message de validation mis à jour est placé dans le référentiel afin qu'il ne soit pas perdu.

Je me suis cassé la tête en supprimant puis en rajoutant le fichier incriminé. Ce n’est pas le meilleur moyen de le faire, et cela a probablement brisé l’historique des révisions, mais cela me convenait parfaitement.

Raison de vouloir le faire: Le fichier était l’un des deux exécutables construits à partir de la même source (avec un ensemble de #defines différent). Un changement mineur dans la source signifiait que l'un avait changé, l'autre non. Je voulais enregistrer dans l'historique des révisions que je l'avais mis à jour avec la dernière version (même s'il n'y avait pas eu de changement).

Peut-être le commentaire de Morten Holdflod Møller selon lequel "le fichier fera toujours partie de la nouvelle révision". couvrirait cette indication, mais je pense qu'un journal du fichier non modifié ne contenait aucun commentaire pour cette révision.

S'il s'agit d'un fichier texte, ajoutez simplement des espaces, tels qu'un saut de ligne.

Répondre aux questions de certaines personnes devrait être possible: pour une raison quelconque, svn ne reconnaît pas les différences entre les fichiers doc, aussi je voudrais forcer la validation!

Je déplace maintenant la documentation des répertoires statiques vers svn. les fichiers sont comme UG_v1.2, UG_v1.3 etc. Donc, juste pour garder l’historique, je prends la version 1.2, supprime la version du nom de fichier, puis l’ajoute et la valide pour svn. Ensuite, je prends la version de la seconde, la copie par-dessus la première et souhaite la valider, ainsi que la version la plus récente. La taille du fichier et la date de création changent (sans mentionner le contenu de la doc), mais svn prétend qu'il s'agit parfaitement du même fichier et m'interdit de le valider. Lorsque je modifie manuellement le document, svn voit le différent. Le diable? : >

Je ne pense pas que ce soit possible, mais tout d’abord, pourquoi avez-vous besoin de faire cela? Si un fichier n'est pas modifié, il ne devrait pas être validé.

Si vous voulez vraiment que ce fichier soit groupé avec d'autres fichiers dans un commit, vous pouvez changer quelque chose de mineur à l'intérieur (ajoutez un espace par exemple).

La raison pour laquelle quelqu'un veut valider un fichier inchangé est une incompréhension sur la façon de revenir à une version précédente d'un fichier.

Par exemple, vous pouvez restaurer le fichier index.html dans la révision 680 en le mettant simplement à jour avec une révision antérieure, par exemple. 650 :

svn update index.html -r 650

mais cela ne résout pas le problème, car:

svn status -u index.html
        *      650   index.html
Status against revision:    680

svn indique clairement que index.html est modifié à distance et vous ne pouvez pas le valider, c’est-à-dire qu'il "pense". Cet index.html est ancien et doit être mis à jour avec une révision plus récente. La prochaine svn update ramènera alors index.html dans la révision 680 .

Pour vraiment restaurer un fichier, vous devez le fusionner dans l'ordre inverse:

svn merge -r 680: 650 index.html

puis validez-le svn ci -m " retourné à r650 " index.html

En fait, j’ai trouvé une raison de s’engager de force. Ce n’est probablement pas une pratique recommandée, mais nous avons mis Truecrypt ( http://www.truecrypt.org/ ). volumes dans SVN car nous devons garder une sécurité stricte sur certains scripts shell car ils contiennent des informations sensibles. Lorsqu'un volume Truecrypt est créé, ses données binaires restent les mêmes, peu importe ce que vous en faites. Donc, en effet, je peux changer le contenu du volume mais le volume ne semble jamais avoir été modifié.

Changer la propriété NE forcera PAS le commit.

TortoiseSVN 1.4.5, version 10425 - 32 bits, 2007/08/26 11:14:13

J'ai le même problème avec un volume trueCrypt.

J'ai ajouté une nouvelle propriété (comme suggéré ci-dessus) " forceCommit1 " et eux, j'ai pu valider le fichier de volume. mais seule la propriété a été validée et non le contenu du fichier.

J'ai supprimé le fichier et l'ai ajouté à nouveau au svn

Je pensais que vous pouviez le faire depuis la ligne de commande?

svn ci -force <filename>

Je n'ai pas de référentiel ici pour vérifier cela, donc je peux me tromper.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top