From 78a69e5bd632eb86ef8135e9c1d05d2c48b43362 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 16 Oct 2008 17:20:17 -0400 Subject: [PATCH] only darcs add files not yet in version control --- IkiWiki/Plugin/darcs.pm | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/IkiWiki/Plugin/darcs.pm b/IkiWiki/Plugin/darcs.pm index 27ea6b6dd..1facc1789 100644 --- a/IkiWiki/Plugin/darcs.pm +++ b/IkiWiki/Plugin/darcs.pm @@ -88,14 +88,14 @@ sub darcs_info ($$$) { ($_) = =~ /$field=\'([^\']+)/; $field eq 'hash' and s/\.gz//; # Strip away the '.gz' from 'hash'es. - close(DARCS_CHANGES) or error("'darcs changes' exited " . $?); + close(DARCS_CHANGES); return $_; } -sub darcs_rev($) { - my $file = shift; # Relative to the repodir. - my $repodir = $config{srcdir}; +sub file_in_vc($$) { + my $repodir = shift; + my $file = shift; my $child = open(DARCS_MANIFEST, "-|"); if (! $child) { @@ -104,11 +104,18 @@ sub darcs_rev($) { } my $found=0; while () { - $found = 1, last if /^$file$/; + $found = 1, last if /^(\.\/)?$file$/; } - return "" if (! $found); close(DARCS_MANIFEST) or error("'darcs query manifest' exited " . $?); + return $found; +} + +sub darcs_rev($) { + my $file = shift; # Relative to the repodir. + my $repodir = $config{srcdir}; + + return "" if (! file_in_vc($repodir, $file)); my $hash = darcs_info('hash', $repodir, $file); return defined $hash ? $hash : ""; } @@ -304,9 +311,11 @@ sub rcs_commit_staged($$$) { sub rcs_add ($) { my $file = shift; # Relative to the repodir. - # Intermediate directories will be added automagically. - system('darcs', 'add', '--quiet', '--repodir', $config{srcdir}, - '--boring', $file) and error("'darcs add' failed"); + if(! file_in_vc($config{srcdir}, $file)) { + # Intermediate directories will be added automagically. + system('darcs', 'add', '--quiet', '--repodir', $config{srcdir}, + '--boring', $file) and error("'darcs add' failed"); + } } sub rcs_remove ($) { -- 2.32.0.93.g670b81a890