2009-03-02 7 views
3

J'ai besoin d'un système de contrôle de version qui fonctionne comme Subversion mais qui conserve l'horodatage «modifié» (date) de chaque fichier.Contrôle de version pour les binaires avec horodatage

Nous avons besoin de versionner nos projets d'installation. Dans ce cas, il est important que les fichiers d'entrée (dll/exe) conservent leur horodatage.

Quel est le meilleur outil pour cela? (OS: Windows)

Mise à jour:

Voici un exemple de ce que je voudrais à faire:

  • mis "foo.dll" (modifiée 1/1/2009) et « bar .dll "(modifié 2/2/2009) dans le répertoire de travail
  • créer/tester l'installation et faire un seul commit
  • lorsqu'un autre développeur extrait le projet foo.dll et bar.dll doivent avoir leur origine date de modification (01/01/2009 et 02/02/2009)

Notre solution actuelle consiste à compresser chaque DLL (la date modifiée est conservée dans le zip), mais je préférerais quelque chose de plus facile.

+0

Tous les systèmes de contrôle de version maintiennent un horodatage « LST modifié », je pense que ce n'est pas ce que vous recherchez. Voulez-vous être en mesure de spécifier les horodatages modifiés lors de l'ajout au référentiel? –

+0

Je veux que les fichiers conservent leur date de modification - J'ai ajouté un exemple. – laktak

Répondre

1

Vous pouvez essayer d'utiliser une propriété subversion définie pour stocker l'horodatage. si vous modifiez cet horodatage, vous avez un état "modifié" du fichier et vous pouvez le valider. vous pouvez accéder au contenu des propriétés en utilisant la ligne de commande. Aussi, vous avez différentes heures de chaque fichier.

Cependant, vous devrez peut-être quelques scripts supplémentaires mineurs pour définir/lire les propriétés

1

Dans git, un "commit" pointe vers un seul arbre, le marquant comme le projet à un certain moment. Il contient des méta-informations sur ce point dans le temps, comme un horodatage, l'auteur des modifications depuis la dernière validation, un pointeur vers la précédente (s), etc.

+0

Je suppose que la plupart des systèmes de contrôle de version fournissent cela? –

+0

Peut-il stocker l'horodatage de chaque fichier? – laktak

0

Ceci est l'une de ces demandes que les développeurs subversion ont sur le radar, mais n'ont pas encore mis en œuvre. Comme « Nerdling » suggère, git ou Mercurial peut-être une meilleure option, mais vous avez un couple d'options dans Subversion (puisque vous cherchez quelque chose comme SVN):

  1. Il y avait un script de discussion et perl sur la Site Web SVN qui a eu quelques solutions de contournement. Il a conservé la date modifiée sur la validation initiale ... par la suite, il utilise le temps de validation, mais vous pourriez probablement modifier le script pour utiliser l'heure modifiée. C'est perl, donc votre kilométrage sur Windows peut varier (je n'ai pas utilisé cygwin et/ou perl sur windows): http://svn.haxx.se/users/archive-2006-10/1345.shtml

  2. Vous pouvez modifier la propriété svn: date de chaque révision après la validation pour correspondre à la modification temps. Cela va changer la date de modification de chaque fichier dans la validation, mais, si c'est indésirable, assurez-vous de commettre les binaires sur leur propre: http://svnbook.red-bean.com/en/1.5/svn.ref.properties.html et http://svnbook.red-bean.com/en/1.5/svn.advanced.props.html

  3. Je pense que tortoisesvn sur les fenêtres peuvent avoir des options pour gérer définir la propriété date sur une validation. Je n'ai entendu cette rumeur, et non utilisé, donc c'est par ouï-dire :-)

Aucune de ces sont particulièrement élégantes, et nécessitent un effort supplémentaire de votre part, mais ils vont travailler si vous voulez coller avec SVN, ce qui est certainement un bon produit. Si vous décidez d'explorer un autre SCM comme Git ou Mercurial, notez que vous pouvez les utiliser comme SVN et ignorer leurs autres caractéristiques pour faciliter la transition.

+0

Merci - vos premières solutions pourraient bien fonctionner mais nous avons des centaines de fichiers et si je fais un commit pour chacun d'entre eux, ça deviendra vraiment salissant. – laktak

+0

Dans ce cas, vous pouvez écrire un script personnalisé (peut-être une variante du script perl ci-dessus) pour rechercher les fichiers binaires dans votre commit par type de fichier, puis demander au script de définir la date svn: pour eux. Vous pouvez lier ce script au hook SVN post_commit pour qu'il s'exécute automatiquement après chaque commit. –

2

Subversion a l'option use-commit-times qui permet d'utiliser la copie locale en utilisant l'horodatage de la dernière heure de validation de chaque fichier. En outre, svn export définit toujours la dernière heure de validation.

+0

Malheureusement, cela définirait l'heure modifiée à la date de validation au lieu de conserver l'horodatage d'origine. – laktak

Questions connexes