Comment faire Subversion (ou tout autre programme) effectuer des validations périodiques?

StackOverflow https://stackoverflow.com/questions/758916

  •  09-09-2019
  •  | 
  •  

Question

Je veux configurer mon ordinateur afin que dire chaque demi-heure, il engage automatiquement le programme sur lequel je travaille. J'utilise un référentiel svn même si elle était juste un script qui a couru « svn ci » toutes les 30 minutes qui serait correct. Le problème est que je ne sais pas comment faire.

Quelqu'un pourrait-il s'il vous plaît me dire ou me diriger vers quelque chose, ce serait me laisser ce genre de choses commettras périodique travail?

Merci d'avance.

EDIT: Désolé, il semble que j'ai des gens confus quant à pourquoi je voudrais faire. La seule raison que je veux faire est parce qu'un professeur de mes veut savoir comment notre code se développe au fil du temps et je pensais que ce serait une bonne idée d'utiliser svn à cet effet. Peu importe si la dernière commettras fonctionne ou non. Il a juste pour montrer les changements que j'ai apportées au code au fil du temps.

Était-ce utile?

La solution

Je ne voudrais pas sale votre système version de contrôle avec une telle série de commits automatique. Mais je suis d'accord avec l'idée d'utiliser un système de version de contrôle pour fournir cette information.

Alors, ma suggestion est: utiliser un référentiel pour votre logiciel et un autre pour stocker l'auto engage. Lorsque le travail est fait, fusionner tous les commits auto dans le référentiel principal dans une seule logique commettras.

Avec git, je ferais ceci:

  1. Repo 'foo': le dépôt principal
    1. refs / heads / ...: l'emplacement de vos branches de développement
    2. refs / sessions / ...:. L'emplacement de votre travail avec commits sale
  2. Votre copie de travail:
    1. "git init"
    2. "git ajouter à distance git foo: // foo / ...; git chercher foo"
  3. créer la branche: "foo / maître bar git checkout"
  4. Balise
  5. le début de la branche: "tag git barbegin"
  6. activer le script: "en vrai, ne git ajouter -A, git commit -m 'autocommit', fait."
  7. Je ne voudrais pas utiliser une tâche cron, vous pouvez activer / désactiver les autocommits facilement.
  8. faire votre travail
  9. après fait votre travail, désactivez le script
  10. valider les modifications en attente
  11. maintenant, vous avez beaucoup d'auto engage dans la barre de branche, et que vous avez marqué la première validation de la branche avec barbegin
  12. publier votre auto engage:
    1. "tag git Barend"
    2. "git pousser foo barbegin: refs / sessions / votre nom d'utilisateur / l'identifiant de session / begin"
    3. "git pousser foo Barend: refs / sessions / votre nom d'utilisateur / l'identifiant de session / fin"
  13. maintenant, vous avez publié votre travail et votre professeur peut-il accéder à
  14. pour mettre à jour votre dépôt foo:
    1. "git rebase -i --onto barbegin barbegin" et procéder comme décrit
    2. Je SQUASH tous les commits: "à la fin, il ne peut y avoir qu'un seul"
    3. .
    4. "git push bar foo: maître" # un seul commettras sera poussé
  15. Nettoyage:
    1. "git tag -d barbegin"
    2. "git tag -d Barend"
    3. "bar de branche git"

Après tout cela, je pense que aucune information utile peut être recueillie avec ce genre de données. Donc, je voudrais essayer d'éviter ce flux de travail. Mais si vraiment nécessaire, je le ferais de cette façon.

Autres conseils

Contrairement à l'opinion populaire apparente, je pense que cela est une grande utilisation de svn, dans le cadre de la mission.

Des outils comme kdesvn (ou mieux encore, tortoisesvn, mais c'est seulement sur les fenêtres) pourraient vous donner une grande idée de ce qui se passe avec leurs vues journaux, diffs et le blâme visuels.

Si vous utilisez ubuntu, exécutez ce script bash à partir d'une console qui est distincte de celle sur laquelle vous travaillez.

#!/bin/bash
while [ 1 ]
do
        # Do the commit
        svn ci --message "Automated commit" ~/yourworkingcopy

        # Wait until next commit time
        sleep 1800
done

Vous pouvez essayer une tâche cron qui exécute un script shell. Quel système d'exploitation êtes-vous?

Mais je suis curieux de savoir pourquoi vous voulez faire. Votre commits devrait consister en éléments de corrections de bugs ou de fonctionnalité, et non en fonction d'un intervalle de temps. Vous êtes susceptible de commettre au milieu d'un changement (un groupe de fichiers) qui rendra vos révisions inutiles.

Je ne pense pas que la mise commits sur un calendrier chronométré est une idée particulièrement bonne. Surtout si vous commencez à entrer dans les tests et l'intégration continue. À des intervalles de commettre ensemble brisera la construction parce qu'il n'y a aucune garantie que vous aurez terminé le changeset dans le laps de temps.

Une meilleure façon, si vous voulez auto-validation est de faire la commettras partie du processus de construction lui-même. Il suffit de faire la dernière étape du processus de construction d'une validation au référentiel. De cette façon, si la construction échoue, vous ne commettra pas les déchets.

tout à fait possible avec toutes les saveurs de faire et je sais que Visual Studio a pré et post construire des événements qui peuvent être configurés pour faire quelque chose comme ça. Je suis assez sûr que la plupart des environnements de développement modernes peuvent gérer cela.

En considération particulière à ce problème en particulier:
Déplacer le commit crochet au début du processus afin que vous puissiez suivre quand vous gâcher royalement aussi bien et comment vous venez de corriger les erreurs.

J'utiliser Subversion, mais je plutôt juste prendre l'habitude de travailler sur des changements simples et comitting ceux d'un dépôt.

De cette façon, le conférencier, s'il veut, peut regarder non seulement ce changé, mais pourquoi il a changé. Ce serait, j'imagine beaucoup plus utile.

Si vous utilisez une saveur d'UNIX considèrent la création d'un Cron travail pour exécuter des commandes à un intervalle régulier.

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