From 38dff5616e5462e9fd582a7b18d34d6d67d86567 Mon Sep 17 00:00:00 2001 From: Fabien Tassin Date: Fri, 13 Jun 2008 23:16:23 +0200 Subject: * 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 --- src/mozclient/flock.conf | 2 +- src/mozclient/lib/MozClient/CVS.pm | 10 ++++++++++ src/mozclient/lib/MozClient/Mercurial.pm | 9 +++++++++ src/mozclient/lib/MozClient/Subversion.pm | 24 +++++++++++++++++++++++- src/mozclient/lib/MozClient/VCS.pm | 10 ++++++++-- 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 -- cgit v1.2.3