Frage

Was sind einige gemeinsame und / oder nützliche pre-commit Haken für SVN?

War es hilfreich?

Lösung

Wir haben einen Post Haken, dass Beiträge die Nachricht an ein Twitter-Account begehen. Verwendet twitsvn (Disclaimer: Ich bin ein Committer an diesem Projekt).

Dumme? Vielleicht ... aber es stellte sich ein guter Weg, um aus für uns das Treiben auf unserer Repository, um einige unserer Version-control-herausgefordert Teammitgliedern zu kommunizieren. Sobald SVN begann über ihr Twitter-Client mit ihnen zu sprechen, ist es nicht so viel wie eine Blackbox fühlen.

Andere Tipps

Dass ein Benutzer eingegeben tatsächlich einen Kommentar über die Nachricht begehen, und daß es eine bestimmte Nummer zu verfolgen.

Überprüfen auf absolute Pfade in verschiedenen Textdateien (das heißt VRML, XML etc.). Die meisten der überprüften-in-Code sollte niemals absolute Pfade haben, noch einige Leute und Werkzeuge bestehen auf hartcodierte Material zu erzeugen.

Ich habe eine Wortzahl auf Nachrichten übermittelt. Sie müssen fünf Worte oder mehr betragen. Dies führte zu einigen komödiantischen Beleidigungen gegen mich ...

  • für Tabs prüfen und lehnen die Check-In.
  • Überprüfen Sie für inkonsequent Linie Endungen und die Check-in abzulehnen.
  • Nach Auftreten von „CR: [Benutzername]“und lehnen die Check-in wenn es kein Code-Review.

Sie möchten vielleicht auf einen Blick nehmen: http://svn.apache.org /repos/asf/subversion/branches/1.6.x/www/tools_contrib.html#hook_scripts (Diese Seite ist eventuell veraltet sein könnten offensichtlich ist es nicht mehr für Subversion 1.7 beibehalten)

oder direkt bei: https://svn.apache.org/repos/asf/subversion/trunk/ contrib /

Ich mag mit svn Haken an:

  • erzwingen die strengeren Punkte Code Stil
  • Prüfung auf offensichtliche Syntaxfehler
  • stellen Sie sicher, spezielles Trac Schlüsselwörter wie „Fixes“ oder „Adressen“ werden vorhergehenden tatsächlich die entsprechende Ausgabenummer

ich die Datei des Typs überprüfen und sicherstellen, dass bestimmte verbotene Typen sind nicht zufällig begangen (zB OBJ, PDB). Na ja, nicht seit dem ersten Mal, wenn jemand in 2 Gig Compiler generierte temporäre Dateien geprüft werden: (

für Fenster:


@echo off

svnlook log -t "%2" "%1" | c:\tools\grep -c "[a-zA-z0-9]" > nul
if %ERRORLEVEL% NEQ 1 goto DISALLOWED

echo Please enter a check-in comment 1>&2
exit 1


:DISALLOWED
svnlook changed -t %2 %1 > c:\temp\pre-commit.txt

findstr /G:"%1\hooks\ignore-matches.txt"  c:\temp\pre-commit.txt > c:\temp\precommit-bad.txt
if %ERRORLEVEL% NEQ 0 exit /b 0

echo disallowed file extension >> c:\temp\precommit-bad.txt
type c:\temp\precommit-bad.txt 1>&2
exit 1

Ich verwende einen post-commit Haken den Autor Immobilie an einen freundlichen Namen von unserem LDAP-Baum neu zu schreiben. (Authentifizierung ist mit Mitarbeitern-ID)

Ein großes commit wir auf unserem Archiv haben, ist alle VCPROJ (oder CSPROJ) Visual Studio-Projekte zu überprüfen, um die Ausgabeverzeichnisse stellen Sie sicher, nicht lokal zu etwas geändert wurden (allgemein für das Debuggen verwendet).

werden diese Probleme richtig kompilieren, aber immer noch die Build wegen fehlender Executables brechen.

In der Firma aktuell arbeite ich, wird diese geprüft:

  • Wenn binäre Dateien haben die Bedürfnisse Sperre Attribut gesetzt;
  • Wenn die Java-Dateien mit dem Standard-Copyright-Hinweis haben, und wenn es das aktuelle Jahr umfasst;
  • Wenn der Code richtig formatiert ist (wir verwenden Jalopy für die Code-Formatierung) - das klingt vielleicht albern, aber es macht tatsächlich Textvergleiche zwischen verschiedenen Versionen einfacher;
  • Wenn der Code eine Nachricht begehen;
  • Wenn die Verzeichnisstruktur entspricht, was definiert ist (alle Projekte unter einem definierten SVN Ordnern sein sollten, und jedes Projekt sollte einen Tags, Zweig und Stamm-Ordner);

Ich denke, das ist es.

Ich mag die Idee zu überprüfen, ob die Commit mit einem Ticket zugeordnet ist; es macht wirklich viel Sinn für mich.

Einige bevorzugen einen Fussel artiges Werkzeug für eine bestimmte Sprache laufen häufig auftretende Probleme im Code zu finden und / oder durchzusetzen Stil Codierung. Jedoch in einem kleinen und erfahrenen Team ziehe ich jeden zu ermöglichen, begehen zu durchlaufen und mit möglichen Problemen bei der kontinuierlichen Integration und / oder Code-Review beschäftigen. Dank dieser Commits sind schneller, die häufigere Commits ermutigt, auf eine einfachere Integration führt.

Ich verwende den Check- mime-type.pl Haken pre-commit, dass MIME-Typ und Zeilenende Optionen auf engagierte Dateien zu überprüfen. Ich verwende Subversion-Dateien zu veröffentlichen sichtbar sein DAV auf einer Website, und alle Dateien ohne die MIME-Typen fertig diente als Textdateien (zum Beispiel HTML-Quelle in einem Browser angezeigt wird anstelle des gerenderten Markup).

Legen Sie eine Notiz in Mantis Bugtracker mit den Änderungsliste Details auf der Grundlage der Commit-Nachricht über RegEx ‚Ausgabe #‘ oder dergleichen.

Dass es eine Festschreibung hat Nachricht, und es ist! = Als „Bugfixing“. Verdammt, habe ich hasse diese nutzlosen Nachrichten!

Wir haben die Verwendung pre-commit und post-commit Haken Combo automatisch Bugzilla aktualisieren mit dem zugehörigen Eintrag aus dem svn commit.

Wir verwenden ein zweiten (pre-commit) einhaken, um sicherzustellen, dass die entsprechende svn: eol-style und svn:. Schlüsselwörter Eigenschaften sind auf einer Datei gesetzt, bevor es den Repostitory hinzugefügt wird

Wir haben ein Drittel (post-commit) Haken einen Build, kick off und die Ergebnisse Mail, wenn der Build gebrochen ist, und jeden zu informieren, wenn der Build wieder behoben wurde.

Wir haben ein Viertel (post-commit) einhaken SVN-Replikation, kick off, um sicherzustellen, dass die Offsite-Replikation so aktuell wie möglich ist.

Leider kann ich die Quelle nicht auf diese veröffentlichen, aber mit Ausnahme der Bugzilla-Integration, sie sind genug, um einfach zu implementieren, und scmbug .

Ich verwende den folgenden Hook-Skript um sicherzustellen, dass Zeilenende des Quellcodes und Berechtigungen von Shell-Skripten zu machen richtig sind (es frustrierend ist, wenn jemand auf Fenster in überprüft, wenn alles in Ordnung scheint, und bricht das Unix-Build).

#!/bin/bash

REPOS="$1"
TXN="$2"

# Exit on all errors.
set -e
SVNLOOK=svnlook
echo "`$SVNLOOK changed -t "$TXN" "$REPOS"`" | while read REPOS_PATH
do
  if [[ $REPOS_PATH =~ A[[:blank:]]{3}(.*)\.(sh|c|h|cpp) ]]
  then
    if [ ${#BASH_REMATCH[*]} -ge 2 ]
        then
    FILENAME=${BASH_REMATCH[1]}.${BASH_REMATCH[2]};

    # Make sure shell scripts are executable
    if [[ sh == ${BASH_REMATCH[2]} ]]
    then
        EX_VALUE="true"
            if [ -z "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:executable \"$FILENAME\" 2> /dev/null`" ]
            then
            ERROR=1;
                echo "svn ps svn:executable $EX_VALUE \"$FILENAME\"" >&2
        fi
        EOL_STYLE="LF"
    else
        EOL_STYLE="native"
    fi

    # Make sure every file has the right svn:eol-style property set
        if [ $EOL_STYLE != "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:eol-style \"$FILENAME\" 2> /dev/null`" ]
        then
        ERROR=1;
            echo "svn ps svn:eol-style $EOL_STYLE \"$FILENAME\"" >&2
    fi
    fi
  fi
  test -z $ERROR || (echo "Please execute above commands to correct svn property settings." >& 2; exit 1)
done

Wie wärs mit einem Haken das Projekt zu kompilieren? z.B. Führen Sie machen alle. Dies stellt sicher, niemand Kontrollen in Code, der nicht kompilieren lässt! :)

Die Lösung fehlende Datei Externals in SVN 1.5 unter Verwendung von PostUpdate und PreCommit

würde ich einen Haken genießen, die für [Rezensent: xyz] prüft Notiz in der Commit-Nachricht, und verwirft die commit

.

Ich denke an einem Schreiben von Doctype ist auf aspx / html-Dateien zu überprüfen, nur sicherzustellen, dass jeder der richtigen verwendet wird.

Sie können aber auch eine Vorbestellung (oder Post) commit drücken, um eine Meldung aus, um Ihren CI-Server wie auf dem Hudson Blog beschrieben

Ich überprüfe für Fall Kollision (dumme Fenster) und auch dafür sorgen, require-mergeinfo.pl zu, dass der Kunde mindestens 1,5 - auf diese Weise svn: mergeinfo wird immer dann gesetzt werden

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