The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/bin/perl
use strict;
# Copyright 2012 Grant Street Group, All Rights Reserved.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# PODNAME: gitc-rebase
# ABSTRACT: Rebase a changeset
our $VERSION = '0.60'; # VERSION
branch_point
full_changeset_name
git
is_auto_fetch
);
use Getopt::Long qw( :config pass_through );
my $onto;
GetOptions( 'onto=s' => \$onto );
if ($onto) {
my $original = $onto;
$onto = $onto =~ m/^(master|test|stage|prod)$/
? "origin/$onto"
: full_changeset_name($onto);
die "I don't understand --onto argument '$original'\n" if not $onto;
unshift @ARGV, "--onto $onto";
}
# make sure our mirror of the origin is up to date
git "fetch origin" if is_auto_fetch();
my $merge_base = branch_point();
# it would be great to automatically do '--onto stage' if this changeset
# is based on stage (and so forth). At this point, you have to specify
# it manually.
exec "git rebase @ARGV $merge_base";
__END__
=pod
=head1 NAME
gitc-rebase - Rebase a changeset
=head1 VERSION
version 0.60
=head1 AUTHOR
Grant Street Group <developers@grantstreet.com>
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2013 by Grant Street Group.
This is free software, licensed under:
The GNU Affero General Public License, Version 3, November 2007
=cut