Wie Subversion (oder ein beliebiges Programm) durchführen regelmäßig Commits machen?

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

  •  09-09-2019
  •  | 
  •  

Frage

Ich möchte meinen Computer so konfigurieren, dass jede halbe Stunde sagen, es begeht das Programm automatisch an dem ich arbeite. Ich bin mit einem SVN-Repository so auch wenn es nur ein Skript war, die ‚svn ci‘ lief alle 30 Minuten, die in Ordnung sein würde. Das Problem ist, dass ich weiß nicht, wie das zu tun.

Könnte jemand bitte sagen Sie mir, oder leitet mich zu etwas, das würde ich diese periodischen lassen bekommen begehen Sachen zu arbeiten?

Vielen Dank im Voraus.

EDIT: Leider scheint es, dass ich verwirrt Menschen, warum habe ich wollen würde, dies zu tun. Der einzige Grund, dass ich dies tun möchte, ist, weil ein Dozent von mir will, dass wir wissen, wie unser Code im Laufe der Zeit entwickelt, und ich dachte, dass es eine gute Idee für diesen Zweck zu verwenden svn wäre. Es spielt keine Rolle, ob die neuesten Arbeiten begeht oder nicht. Es hat nur die Änderungen zu zeigen, dass ich auf den Code im Laufe der Zeit gemacht haben.

War es hilfreich?

Lösung

Ich würde Ihre Steuer Version System mit einem solchen Reihe von Auto verpflichtet nicht verschmutzt. Aber ich stimme mit der Idee, eine Versionskontrolle System der Verwendung dieser Informationen zur Verfügung zu stellen.

Dann ist mein Vorschlag: ein Repository für Ihre Software verwenden und ein anderes für Speicher der Auto verpflichtet. Wenn die Arbeit getan, fusioniert alle Autos Commits im Haupt Repository in nur eine logischen begehen.

Mit git, ich würde das tun:

  1. Repo 'foo': der Haupt-Repository
    1. refs / heads / ...: Die Lage Ihrer Entwicklungszweige
    2. Refs / sessions / .... Die Lage Ihrer Arbeit mit schmutzigen Commits
  2. Ihre Arbeitskopie:
    1. "git init"
    2. "git remote foo git add: // foo / ...; git holen foo"
  3. erstellen Sie den Zweig: "git checkout -b bar foo / Master"
  4. -Tag den Anfang der Branche: "git tag barbegin"
  5. Aktivieren Sie das Skript: "while true; do -A git add; done; git -m 'autocommit' begehen."
  6. Ich würde nicht einen cron-Job verwenden, so können Sie die autocommits leicht aktivieren / deaktivieren.
  7. Sie Ihren Job
  8. nach Ihrer Arbeit, deaktivieren Sie das Skript
  9. verpflichten ausstehende Änderungen
  10. jetzt, Sie haben eine Menge Auto in Zweig Bar verpflichtet, und Sie haben markieren die Anfänge der Branche mit barbegin commit
  11. Veröffentlichen Sie Ihr Auto verpflichtet:
    1. "git tag barend"
    2. "git push foo barbegin: Refs / sessions / Ihre Benutzer-ID / die Session-ID / beginnen"
    3. "git push foo barend: Refs / sessions / Ihre Benutzer-ID / die Session-ID / end"
  12. jetzt haben Sie Ihre Arbeit veröffentlicht und Ihr Dozent kann darauf zugreifen
  13. für die Aktualisierung Ihrer foo-Repository:
    1. "git rebase -i --onto barbegin barbegin" und gehen Sie wie beschrieben hier
    2. würde ich alle Commits Squash: „Am Ende kann es nur einen geben“
    3. .
    4. "git push foo bar: master" # man wird nur begehen geschoben
  14. Reinigung:
    1. "git tag -d barbegin"
    2. "git tag -d barend"
    3. "git branch -d bar"

Nach all dem, glaube ich keine nützlichen Informationen kann mit einer solchen Art von Daten gesammelt werden. Also, ich würde versuchen, diesen Workflow zu vermeiden. Aber wenn wirklich nötig, würde ich auf diese Weise tun.

Andere Tipps

Im Gegensatz zu offensichtlich landläufiger Meinung, ich denke, das eine große Verwendung von SVN ist, im Zusammenhang mit der Zuordnung.

Tools wie kdesvn (oder noch besser, tortoisesvn, aber das ist nur auf Windows) können Sie einen großartigen Einblick in das, was sie mit ihren Log-Ansichten passiert, diffs und Tadel Visuals.

Wenn Sie Ubuntu verwenden, führen Sie dieses Bash-Skript von einer Konsole, die auf der einen separaten ist Sie gerade arbeiten.

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

        # Wait until next commit time
        sleep 1800
done

Sie können einen cron-Job versuchen, die ein Shell-Skript ausgeführt wird. Was OS sind Sie?

Aber ich bin neugierig, warum Sie dies tun wollen würde. Ihre Commits sollten von Stücken von Funktionalität oder Bug-Fixes bestehen, und nicht auf der Grundlage eines Zeitintervalls. Du bist wahrscheinlich in der Mitte einer Änderung zu übernehmen (auf eine Gruppe von Dateien), die Ihre Revisionen unbrauchbar machen wird.

Ich glaube nicht Commits auf einem zeitlich abgestimmten Zeitplan Einstellung ist eine besonders gute Idee. Insbesondere beginnen, wenn Sie Tests und kontinuierliche Integration einlässt. in festgelegten Intervallen Begehen wird die Build brechen, weil es keine Garantie gibt, dass Sie die changeset im Zeitrahmen abgeschlossen haben.

Eine bessere Art und Weise, wenn Sie wollen autocommit ist der Teil des Build-Prozesses selbst begehen zu machen. So stellen Sie den letzten Schritt des Build-Prozesses ein in das Repository begehen. Auf diese Weise, wenn der Build fehlschlägt, werden Sie nicht Müll begehen.

Insgesamt möglich mit allen Versionen von make und ich weiß, Visual Studio hat vor und nach dem Build-Ereignissen, die eingestellt werden können, so etwas zu tun. Also ich bin ziemlich sicher, dass die meisten modernen IDEs diese verarbeiten kann.

Als besondere Berücksichtigung dieses Problem insbesondere:
Bewegen Sie den commit zu Beginn des Prozesses, so dass Sie verfolgen können, wenn Sie vermasseln fürstlich, wie gut und wie Sie kommen, um die Fehler zu beheben.

würde ich Subversion, aber ich würde stattdessen nur bekommen in die Gewohnheit, auf einzelne Veränderungen zu arbeiten, und diejenigen mit einem Repository comitting.

der Dozent diese Weise, wenn er will, um nicht nur sehen kann was geändert, aber Warum es geändert. Dies wäre viel nützlicher könnte ich mir vorstellen.

Wenn Sie auf einem Aroma von UNIX laufen sollten Sie eine cron Auftragsbefehle in einem regelmäßigen Intervall ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top