projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of /home/simonmar/ghc-git/.
[ghc-hetmet.git]
/
sync-all
diff --git
a/sync-all
b/sync-all
index
e4cb40e
..
d20f4e7
100755
(executable)
--- a/
sync-all
+++ b/
sync-all
@@
-224,22
+224,45
@@
sub scmall {
my @scm_args;
my $pwd;
my @scm_args;
my $pwd;
+ my @args;
my ($repo_base, $checked_out_tree) = getrepo();
my ($repo_base, $checked_out_tree) = getrepo();
+ my $is_github_repo = $repo_base =~ m/(git@|git:\/\/|https:\/\/)github.com/;
+
parsePackages;
parsePackages;
+ @args = ();
+
if ($command =~ /^remote$/) {
if ($command =~ /^remote$/) {
- if (@_ < 2) {
- help();
+ while (@_ > 0 && $_[0] =~ /^-/) {
+ push(@args,shift);
}
}
+ if (@_ < 1) { help(); }
$subcommand = shift;
$subcommand = shift;
- $branch_name = shift;
- if ($subcommand ne 'add' && $subcommand ne 'rm') {
+ if ($subcommand ne 'add' && $subcommand ne 'rm' && $subcommand ne 'set-url') {
+ help();
+ }
+ while (@_ > 0 && $_[0] =~ /^-/) {
+ push(@args,shift);
+ }
+ if (($subcommand eq 'add' || $subcommand eq 'rm') && @_ < 1) {
help();
help();
+ } elsif (@_ < 1) { # set-url
+ $branch_name = 'origin';
+ } else {
+ $branch_name = shift;
+ }
+ } elsif ($command eq 'new' || $command eq 'fetch') {
+ if (@_ < 1) {
+ $branch_name = 'origin';
+ } else {
+ $branch_name = shift;
}
}
}
}
+ push(@args, @_);
+
for $line (@packages) {
$localpath = $$line{"localpath"};
for $line (@packages) {
$localpath = $$line{"localpath"};
@@
-248,6
+271,12
@@
sub scmall {
$scm = $$line{"vcs"};
$upstream = $$line{"upstream"};
$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"));
# Check the SCM is OK as early as possible
die "Unknown SCM: $scm" if (($scm ne "darcs") and ($scm ne "git"));
@@
-260,7
+289,7
@@
sub scmall {
}
# Work out the arguments we should give to the SCM
}
# 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"));
@scm_args = (($scm eq "darcs" and "whatsnew")
or ($scm eq "git" and "status"));
@@
-309,25
+338,26
@@
sub scmall {
or ($scm eq "git" and "send-email"));
$want_remote_repo = 1;
}
or ($scm eq "git" and "send-email"));
$want_remote_repo = 1;
}
- elsif ($command =~ /^set-origin$/) {
- @scm_args = ("remote", "set-url", "origin", $path);
- }
- elsif ($command =~ /^set-push$/) {
- @scm_args = ("remote", "set-url", "--push", "origin", $path);
- }
elsif ($command =~ /^fetch$/) {
elsif ($command =~ /^fetch$/) {
- @scm_args = ("fetch", "origin");
+ @scm_args = ("fetch", "$branch_name");
}
elsif ($command =~ /^new$/) {
}
elsif ($command =~ /^new$/) {
- @scm_args = ("log", "origin..");
+ @scm_args = ("log", "$branch_name..");
}
elsif ($command =~ /^remote$/) {
if ($subcommand eq 'add') {
@scm_args = ("remote", "add", $branch_name, $path);
} elsif ($subcommand eq 'rm') {
@scm_args = ("remote", "rm", $branch_name);
}
elsif ($command =~ /^remote$/) {
if ($subcommand eq 'add') {
@scm_args = ("remote", "add", $branch_name, $path);
} elsif ($subcommand eq 'rm') {
@scm_args = ("remote", "rm", $branch_name);
+ } elsif ($subcommand eq 'set-url') {
+ @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;
+ }
else {
die "Unknown command: $command";
}
else {
die "Unknown command: $command";
}
@@
-336,20
+366,20
@@
sub scmall {
if (repoexists ($scm, $localpath)) {
if ($want_remote_repo) {
if ($scm eq "darcs") {
if (repoexists ($scm, $localpath)) {
if ($want_remote_repo) {
if ($scm eq "darcs") {
- scm (".", $scm, @scm_args, @_, "--repodir=$localpath", $path);
+ scm (".", $scm, @scm_args, @args, "--repodir=$localpath", $path);
} else {
# git pull doesn't like to be used with --work-dir
# I couldn't find an alternative to chdir() here
} else {
# git pull doesn't like to be used with --work-dir
# I couldn't find an alternative to chdir() here
- scm ($localpath, $scm, @scm_args, @_, $path, "master");
+ scm ($localpath, $scm, @scm_args, @args, $path, "master");
}
} else {
# git status *must* be used with --work-dir, if we don't chdir() to the dir
}
} else {
# git status *must* be used with --work-dir, if we don't chdir() to the dir
- scm ($localpath, $scm, @scm_args, @_);
+ scm ($localpath, $scm, @scm_args, @args);
}
}
elsif ($local_repo_unnecessary) {
# Don't bother to change directory in this case
}
}
elsif ($local_repo_unnecessary) {
# Don't bother to change directory in this case
- scm (".", $scm, @scm_args, @_);
+ scm (".", $scm, @scm_args, @args);
}
elsif ($tag eq "") {
message "== Required repo $localpath is missing! Skipping";
}
elsif ($tag eq "") {
message "== Required repo $localpath is missing! Skipping";
@@
-377,11
+407,11
@@
Supported commands:
* --partial
* fetch
* send
* --partial
* fetch
* send
- * set-origin
- * set-push
* new
* remote add <branch-name>
* remote rm <branch-name>
* new
* remote add <branch-name>
* remote rm <branch-name>
+ * remote set-url [--push] <branch-name>
+ * grep
Available package-tags are:
END
Available package-tags are:
END