2009-11-06 19 views
5

muszę wykonać następujące czynności:W jaki sposób mogę uzyskać dostęp do pliku zatwierdzonego z pre-commit Subversion w Perlu?

  1. Zapis pre-commit w Perlu

  2. Hak powinien sprawdzić wszystkie pliki, które są przeznaczone na obecność jakiegoś tekstu, a nie jeśli tekst nie zostanie znaleziony

Po prostu potrzebuję przykładu haka Perla, który odczytuje pliki, które zostały zatwierdzone.

Naprawdę szukam jakiegoś eleganckiego rozwiązania z najmniejszą ilością kodu.

Notatki: Hak powinien używać svnlook lub innego lepszego sposobu na znalezienie plików.

Odpowiedz

11

pre-commit:

my $repos = shift; 
my $txn = shift; 

foreach my $line (`$svnlook changed -t $txn "$repos"`) 
{ 
    chomp($line); 
    if ($line !~ /^([AUD]).\s\s(.+)$/) 
    { 
    print STDERR "Can't parse [$line].\n"; 
    exit(1); 
    } 
    else 
    { 
    my $action = $1; 
    my $file = $2; 
    chomp($file); 
    #If path has trailing slash, then it is a folder and we want to skip folders 
    if($file =~ /\/$/) 
    { 
    next; 
    } 
    my $fileContent = `$svnlook cat -t $txn "$repos" "$file"`; 
    if ($action =~ /[AU]/) 
    { 
     my @lines = split(/\n/, $fileContent); 
     #Check for whatever you need in this file's content 

    } 
    } 
} 
0

Nie powinno być zbyt trudne modyfikowanie this example in Python, aby robić to, co chcesz. Zobacz także podkatalog hooks twojego repozytorium dla niektórych szablonów i hook scripts i contributed hook scripts.

+0

@Alex Nie ma problemu. Edytowanie postów innych jest sposobem Stackoverflow i pomaga witrynie. –

0

Brzmi jak masz fundament zorientowali się już:

  • get lista wszystkich plików popełniane
  • szukać każdego z nich po kolei dla danego tekstu
  • jeśli tekst znajduje się , odrzuć commit

Znajdziesz kilka informacji na temat pisania haków pre-commit w manual.

Powiązane problemy