2011-09-28 1 views
5

Aidez-moi à faire quelques dégâts! Je suis fatigué de seulement une demi-douzaine de hits Google qui me disent de ne jamais le faire. Mettons les choses en valeur vraiment bien! Je suis assez sûr que je peux obtenir les fichiers réels dans db/transactions, alors comment puis-je les déranger de façon intéressante? J'ai regardé SVN :: Delta, mais je n'arrive même pas à comprendre ce qu'il est censé faire (laisser quelqu'un faire de jolis graphiques de changements dans un dépôt - envoyer des messages codés à la CIA?).Quel est le format des deltas dans un dépôt subversion, et à quel point puis-je le faire exploser si je les change dans un hook de pré-commit?

Je ne me soucie vraiment pas entendre plus de raisons pourquoi ne pas le faire. Je travaille dans un environnement avec 40 ou 50 autres personnes qui utilisent la subversion. Et pendant que nous codons, nous avons besoin de mots de passe dans les fichiers web.config, dans les fichiers DataSource.groovy, vous le nommez. Et juste refuser le commit parce que nous les avons laissés dedans est aussi ennuyeux que l'enfer. Nous devons enregistrer les fichiers avec les mots de passe supprimés manuellement (et nous devons ouvrir ces fichiers, ce n'est pas comme s'ils étaient nécessairement ouverts), puis une fois que nous avons fini de les commettre, nous devons les remettre juste pour continuer à travailler. C'est une bonne idée, je suppose, si vous voulez juste bitchslap les gens chaque fois qu'ils s'engagent jusqu'à ce qu'ils développent un réflexe pavlovien de ne jamais rien commettre. Et pourquoi? Parce que les ordinateurs ne sont pas censés automatiser les tâches? Parce que le client du logiciel ne saura pas que le hook de pré-commit n'a pas encore sauvegardé la version sur la machine du développeur?

Je suis assez langue agnostique ici. Montre-moi un exemple de comment faire ce que tu n'es jamais supposé faire ... quel fichier dois-je éditer à partir de pré-commit? Comment interpréter le charabia après la ligne DELTA # # #? Y a-t-il des bibliothèques qui vont vous aider? Amusons-nous!

PS Sérieusement, personne ne est créé une balise "bad-idées"? WTF.

+2

+1 pour une perversité délicieuse – daxim

Répondre

4

Il est votre processus de construction qui est erronée, pas Subversion. Si vous ne devez pas commettre des mots de passe, faire quelque chose comme ce qui suit:

1-Web.config fichiers ne doivent pas être engagés. Au lieu de cela, commettre des fichiers comme Web.config.dev ou Web.config.qa.
2 - Demandez à votre script de compilation renommer le fichier .config approprié à Web.config, puis faire le remplacement des jetons de sorte que les mots de passe appropriés sont insérés. Cette information peut provenir d'un autre fichier qui n'est pas encore validé et qui indique dans quel environnement vous vous trouvez (pour savoir quel fichier .config utiliser) et quels sont les mots de passe.

+0

C'est vraiment sympa ... de me dire que nous ne devrions pas faire de contrôle de version sur les fichiers. Je suppose que si une production est perdue ou corrompue (ce qui est arrivé il y a un mois seulement), alors nous pouvons leur demander d'effectuer des sauvegardes sur bandes et de les faire fonctionner de nouveau dans quelques jours. Les sons côté client sont vraiment bien, il n'y a que quelques dizaines de développeurs ... et lorsque les nouveaux ordinateurs seront déployés dans quelques mois, nous pourrons l'installer sur plusieurs dizaines de systèmes pour le plaisir! –

+2

@John Je ne pense pas que vous me suivez. Les fichiers que vous ne commettez pas sont générés automatiquement par votre script de construction. Le seul fichier qui n'est pas créé par script checkout ou build est le fichier de mot de passe, qui n'est explicitement pas validé comme une exigence de votre part. De même, votre script de déploiement crée le fichier web.config pour vous. – RedFilter

+2

@JohnO: Non, il vous dit de contrôler la version des fichiers, sauf sans les mots de passe insérés, et ensuite avoir un processus automatisé insérer le mot de passe. Un peu comme comment vous contrôlez un fichier '.c', mais pas' .o'. – derobert

Questions connexes