X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=sync-all;h=6ff06cce8d91e83f18d76ab957ac45fc30f13322;hb=f298598973ca51134074c8801f062382a86328ed;hp=0d0af6767f80c020efbcddd089cc5440b671c27d;hpb=b61c52db76972676b7ba112d8cb723ce18504024;p=ghc-hetmet.git diff --git a/sync-all b/sync-all index 0d0af67..6ff06cc 100755 --- a/sync-all +++ b/sync-all @@ -228,6 +228,8 @@ sub scmall { my ($repo_base, $checked_out_tree) = getrepo(); + my $is_github_repo = $repo_base =~ m/(git@|git:\/\/|https:\/\/)github.com/; + parsePackages; @args = (); @@ -260,7 +262,6 @@ sub scmall { } push(@args, @_); - print "args: @args\n"; for $line (@packages) { @@ -270,6 +271,12 @@ sub scmall { $scm = $$line{"vcs"}; $upstream = $$line{"upstream"}; + # We can't create directories on GitHub, so we translate + # "package/foo" into "package-foo". + if ($is_github_repo) { + $remotepath =~ s/\//-/; + } + # Check the SCM is OK as early as possible die "Unknown SCM: $scm" if (($scm ne "darcs") and ($scm ne "git")); @@ -282,25 +289,31 @@ sub scmall { } # Work out the arguments we should give to the SCM - if ($command =~ /^(?:w|wh|wha|what|whats|whatsn|whatsne|whatsnew)$/) { + if ($command =~ /^(?:w|wh|wha|what|whats|whatsn|whatsne|whatsnew|status)$/) { @scm_args = (($scm eq "darcs" and "whatsnew") or ($scm eq "git" and "status")); # Hack around 'darcs whatsnew' failing if there are no changes $ignore_failure = 1; } + elsif ($command =~ /^commit$/) { + @scm_args = ("commit"); + # git fails if there is nothing to commit, so ignore failures + $ignore_failure = 1; + } elsif ($command =~ /^(?:pus|push)$/) { @scm_args = "push"; - $want_remote_repo = 1; } elsif ($command =~ /^(?:pul|pull)$/) { @scm_args = "pull"; - $want_remote_repo = 1; # Q: should we append the -a argument for darcs repos? } elsif ($command =~ /^(?:g|ge|get)$/) { # Skip any repositories we have not included the tag for if (not defined($tags{$tag})) { + $tags{$tag} = 0; + } + if ($tags{$tag} == 0) { next; } @@ -346,6 +359,17 @@ sub scmall { @scm_args = ("remote", "set-url", $branch_name, $path); } } + elsif ($command =~ /^grep$/) { + @scm_args = ("grep"); + # Hack around 'git grep' failing if there are no matches + $ignore_failure = 1; + } + elsif ($command =~ /^reset$/) { + @scm_args = "reset"; + } + elsif ($command =~ /^config$/) { + @scm_args = "config"; + } else { die "Unknown command: $command"; } @@ -387,6 +411,7 @@ What do you want to do? Supported commands: * whatsnew + * commit * push * pull * get, with options: @@ -399,6 +424,9 @@ Supported commands: * remote add * remote rm * remote set-url [--push] + * grep + * reset + * config Available package-tags are: END @@ -459,9 +487,11 @@ sub main { } # -- says we grab the libs tagged 'tag' with # 'get'. It has no effect on the other commands. - elsif ($arg =~ m/^--/) { - $arg =~ s/^--//; - $tags{$arg} = 1; + elsif ($arg =~ m/^--no-(.*)$/) { + $tags{$1} = 0; + } + elsif ($arg =~ m/^--(.*)$/) { + $tags{$1} = 1; } else { unshift @_, $arg;