summaryrefslogtreecommitdiff
path: root/src/mozclient
diff options
context:
space:
mode:
authorFabien Tassin <fta@sofaraway.org>2008-06-13 23:16:23 +0200
committerFabien Tassin <fta@sofaraway.org>2008-06-13 23:16:23 +0200
commit38dff5616e5462e9fd582a7b18d34d6d67d86567 (patch)
tree5da5c17e603768c92327f6fdbef9d1c933592fd5 /src/mozclient
parent3e14e969ab47a6ab3ce6ad2691d44c5024dd2fc2 (diff)
* Add a set_tag() method per VCS
- update src/mozclient/lib/MozClient/VCS.pm - update src/mozclient/lib/MozClient/CVS.pm - update src/mozclient/lib/MozClient/Mercurial.pm - update src/mozclient/lib/MozClient/Subversion.pm * Fix flock to checkout at the right level. This is needed to fetch a particular branch using svn - update src/mozclient/flock.conf
Diffstat (limited to 'src/mozclient')
-rw-r--r--src/mozclient/flock.conf2
-rw-r--r--src/mozclient/lib/MozClient/CVS.pm10
-rw-r--r--src/mozclient/lib/MozClient/Mercurial.pm9
-rw-r--r--src/mozclient/lib/MozClient/Subversion.pm24
-rw-r--r--src/mozclient/lib/MozClient/VCS.pm10
5 files changed, 51 insertions, 4 deletions
diff --git a/src/mozclient/flock.conf b/src/mozclient/flock.conf
index 57cbb1a..e0d6c03 100644
--- a/src/mozclient/flock.conf
+++ b/src/mozclient/flock.conf
@@ -16,7 +16,7 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
MOZCLIENT_APPNAME = flock
-MOZCLIENT_PROJECT = flock/trunk/mozilla
+MOZCLIENT_PROJECT = flock/trunk
MOZCLIENT_VCS = svn
MOZCLIENT_VCS_LOC = svn://svn-mirror.flock.com/master/
MOZCLIENT_FILE = mozilla/flock/config/version.txt
diff --git a/src/mozclient/lib/MozClient/CVS.pm b/src/mozclient/lib/MozClient/CVS.pm
index 72a5917..0ce6118 100644
--- a/src/mozclient/lib/MozClient/CVS.pm
+++ b/src/mozclient/lib/MozClient/CVS.pm
@@ -114,6 +114,16 @@ sub set_revdate {
}
}
+sub set_tag {
+ my $self = shift;
+ my $tag = shift;
+
+ $self->LOG("MozClient::CVS::set_tag($tag)");
+
+ $self->{'co_tag'} = "-r $tag";
+ $self->{'moz_co_tag'} = "MOZ_CO_TAG=$tag";
+}
+
sub checkout {
my $self = shift;
diff --git a/src/mozclient/lib/MozClient/Mercurial.pm b/src/mozclient/lib/MozClient/Mercurial.pm
index f5f5c2d..408a6f8 100644
--- a/src/mozclient/lib/MozClient/Mercurial.pm
+++ b/src/mozclient/lib/MozClient/Mercurial.pm
@@ -53,6 +53,15 @@ sub set_revdate {
'-r ' . $self->convert_revdate($self->{'have_date'});
}
+sub set_tag {
+ my $self = shift;
+ my $tag = shift;
+
+ $self->LOG("MozClient::Mercurial::set_tag($tag)");
+
+ $self->{'co_tag'} = "-r $tag";
+}
+
sub checkout {
my $self = shift;
diff --git a/src/mozclient/lib/MozClient/Subversion.pm b/src/mozclient/lib/MozClient/Subversion.pm
index 96ea1f9..8b7bf0e 100644
--- a/src/mozclient/lib/MozClient/Subversion.pm
+++ b/src/mozclient/lib/MozClient/Subversion.pm
@@ -53,10 +53,22 @@ sub set_revdate {
'-r ' . $self->convert_revdate($self->{'have_date'});
}
+sub set_tag {
+ my $self = shift;
+ my $tag = shift;
+
+ $self->LOG("MozClient::Subversion::set_tag()");
+
+ # For svn, a tag is just a snapshot
+ $self->{'MOZCLIENT_PROJECT'} =~ s,/[^/]*$,/tags/$tag,;
+ $self->{'co_tag'} = $tag;
+}
+
sub checkout {
my $self = shift;
$self->LOG("MozClient:Subversion::checkout:()");
+
$self->chdir($self->work_dir);
my $modules = [];
$self->{'MOZCLIENT_VCS_LOC'} .= "/" unless $self->{'MOZCLIENT_VCS_LOC'} =~ m,/$,;
@@ -70,9 +82,19 @@ sub checkout {
$self->{'MOZCLIENT_PROJECT'}, $module);
}
}
- my $cmd = sprintf "svn checkout %s %s mozilla", $self->{'mozclient_date'},
+ my $out = length $self->{'co_tag'} > 0 ? $self->{'co_tag'} : "trunk";
+ my $cmd = sprintf "svn checkout %s %s $out", $self->{'mozclient_date'},
join " ", @$modules;
$self->run_system($cmd);
+ # We drop the 1st directory if there's a mozilla dir inside
+ if (-d "$out/mozilla") {
+ $self->run_shell("mv $out/* $out/.svn .");
+ $self->run_system("rm -rf $out");
+ }
+ else {
+ # we name it mozilla as it is what is expected later on
+ $self->run_system("mv $out mozilla");
+ }
$self->chdir("..");
}
diff --git a/src/mozclient/lib/MozClient/VCS.pm b/src/mozclient/lib/MozClient/VCS.pm
index 9640b99..228d6c9 100644
--- a/src/mozclient/lib/MozClient/VCS.pm
+++ b/src/mozclient/lib/MozClient/VCS.pm
@@ -198,6 +198,13 @@ sub get_client {
die "Can't MozClient::get_client() for " . $self->vcs;
}
+sub set_tag {
+ my $self = shift;
+
+ $self->LOG("MozClient::set_tag()");
+ die "Can't MozClient::set_tag() for " . $self->vcs;
+}
+
sub set_revdate {
my $self = shift;
@@ -240,8 +247,7 @@ sub setup {
$self->{'want_tag'} =~ m/([^=]*)(=?)(.*)/;
$self->{'ltag'} = $1;
$self->{'dtag'} = $3;
- $self->{'co_tag'} = "-r $1";
- $self->{'moz_co_tag'} = "MOZ_CO_TAG=$1";
+ $self->set_tag($1);
}
else {
# we don't want a specific tag, so go for a date and possibly a branch