projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use tcRnImports rather than rnImports with GHCi "import" statement: fixes #4832
[ghc-hetmet.git]
/
sync-all
diff --git
a/sync-all
b/sync-all
old mode 100644
(file)
new mode 100755
(executable)
index
930cfd2
..
d89e439
--- a/
sync-all
+++ b/
sync-all
@@
-3,22
+3,12
@@
use strict;
use Cwd;
use strict;
use Cwd;
-# Figure out where to get the other repositories from,
-# based on where this GHC repo came from.
-my $branch = `git branch | grep "\* " | sed "s/^\* //"`; chomp $branch;
-my $remote = `git config branch.$branch.remote`; chomp $remote;
-my $defaultrepo = `git config remote.$remote.url`; chomp $defaultrepo;
-
-my $defaultrepo_base;
-my $checked_out_tree;
-
+my $defaultrepo;
my @packages;
my @packages;
-
my $verbose = 2;
my $ignore_failure = 0;
my $want_remote_repo = 0;
my $checked_out_flag = 0;
my $verbose = 2;
my $ignore_failure = 0;
my $want_remote_repo = 0;
my $checked_out_flag = 0;
-
my $get_mode;
# Flags specific to a particular command
my $get_mode;
# Flags specific to a particular command
@@
-29,8
+19,18
@@
my %tags;
# Figure out where to get the other repositories from.
sub getrepo {
my $basedir = ".";
# Figure out where to get the other repositories from.
sub getrepo {
my $basedir = ".";
- my $repo = $defaultrepo || `cat $basedir/_darcs/prefs/defaultrepo`;
- chomp $repo;
+ my $repo;
+
+ if (defined($defaultrepo)) {
+ $repo = $defaultrepo;
+ chomp $repo;
+ } else {
+ # Figure out where to get the other repositories from,
+ # based on where this GHC repo came from.
+ my $branch = `git branch | grep "\* " | sed "s/^\* //"`; chomp $branch;
+ my $remote = `git config branch.$branch.remote`; chomp $remote;
+ $repo = `git config remote.$remote.url`; chomp $repo;
+ }
my $repo_base;
my $checked_out_tree;
my $repo_base;
my $checked_out_tree;
@@
-79,7
+79,7
@@
sub parsePackages {
my @repos;
my $lineNum;
my @repos;
my $lineNum;
- open IN, "< packages.git" or die "Can't open packages file";
+ open IN, "< packages" or die "Can't open packages file";
@repos = <IN>;
close IN;
@repos = <IN>;
close IN;
@@
-116,12
+116,25
@@
sub warning {
}
sub scm {
}
sub scm {
+ my $dir = shift;
my $scm = shift;
my $scm = shift;
-
- message "== running $scm @_";
+ my $pwd;
+
+ if ($dir eq '.') {
+ message "== running $scm @_";
+ } else {
+ message "== $dir: running $scm @_";
+ $pwd = getcwd();
+ chdir($dir);
+ }
+
system ($scm, @_) == 0
or $ignore_failure
or die "$scm failed: $?";
system ($scm, @_) == 0
or $ignore_failure
or die "$scm failed: $?";
+
+ if ($dir ne '.') {
+ chdir($pwd);
+ }
}
sub repoexists {
}
sub repoexists {
@@
-150,6
+163,8
@@
sub scmall {
my @scm_args;
my @scm_args;
+ my $pwd;
+
my ($repo_base, $checked_out_tree) = getrepo();
parsePackages;
my ($repo_base, $checked_out_tree) = getrepo();
parsePackages;
@@
-223,6
+238,15
@@
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 =~ /^fetch$/) {
+ @scm_args = ("fetch", "origin");
+ }
+ elsif ($command =~ /^new$/) {
+ @scm_args = ("log", "origin..");
+ }
else {
die "Unknown command: $command";
}
else {
die "Unknown command: $command";
}
@@
-231,19
+255,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, @_, "--repodir=$localpath", $path);
} else {
# git pull doesn't like to be used with --work-dir
} else {
# git pull doesn't like to be used with --work-dir
- scm ($scm, "--git-dir=$localpath/.git", @scm_args, @_, $path, "master");
+ # I couldn't find an alternative to chdir() here
+ scm ($localpath, $scm, @scm_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 ($scm, "--git-dir=$localpath/.git", "--work-tree=$localpath", @scm_args, @_);
+ scm ($localpath, $scm, @scm_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, @_);
}
elsif ($tag eq "") {
message "== Required repo $localpath is missing! Skipping";
}
elsif ($tag eq "") {
message "== Required repo $localpath is missing! Skipping";
@@
-314,7
+339,10
@@
Supported commands:
* --<package-tag>
* --complete
* --partial
* --<package-tag>
* --complete
* --partial
+ * fetch
* send
* send
+ * set-origin
+ * new
Available package-tags are:
END
Available package-tags are:
END