<% my $api = gitprep_api; my $user = param('user'); my $project = param('project'); my $remote_user = param('remote_user'); my $remote_project = param('remote_project'); my $remote_branch = param('remote-branch'); # Authentication unless ($api->logined($user)) { $self->redirect_to('/'); return; } # Branches my $git = app->git; my $remote_branches = $git->branches($remote_user, $remote_project); my $remote_branch_names = [map { $_->{name} } @$remote_branches]; my $op = param('op') || ''; my $errors; if ($op eq 'import' && lc $self->req->method eq 'post') { # Validation my $api = gitprep_api; my $params = $api->params; my $rule = [ user => [ ['user_name' => 'User name is invalid.'] ], project => [ ['project_name' => 'Repository name is invalid.'] ], branch => [ ['not_blank' => 'Branch name is empty.'] ], remote_user => [ ['user_name' => 'Remote User name is invalid.'] ], remote_project => [ ['project_name' => 'Remote repository is invalid.'] ], 'remote-branch' => [ ['not_blank' => 'Remote branch name is empty.'] ], force => {require => 0} => [ 'any' ] ]; my $vresult = app->vc->validate($params, $rule); if ($vresult->is_ok) { my $safe_params = $vresult->data; # Valid paramters my $user = $safe_params->{user}; my $project = $safe_params->{project}; my $branch = $safe_params->{branch}; my $remote_user = $safe_params->{remote_user}; my $remote_project = $safe_params->{remote_project}; my $remote_branch = $safe_params->{'remote-branch'}; my $force = $safe_params->{force}; # Check branch name my $branches = $git->branches($user, $project); if (!$force && grep { $branch eq $_->{name} } @$branches) { $errors = ["Branch \"$branch\" is already exists. If you want to import this branch, check force option."]; } else { eval { $git->import_branch( $user, $project, $branch, $remote_user, $remote_project, $remote_branch, {force => $force} ); }; if ($@) { $errors = ['Internal Error']; } else { flash(message => "Success: " . ($force ? 'force ' : '') . "import \"$remote_user / $remote_project / $remote_branch\" into \"$user / $project / $branch\""); $self->redirect_to('current'); return; } } } else { $errors = $vresult->messages; } } %> % layout 'common', title => "Import branch"; %= include 'include/header'; %= javascript begin $('document').ready(function () { // Select remote branch $('[name=copy-branch-name]').on('click', function () { $('[name=branch]').val($('[name=remote_branch]').val()); return false; }); }); % end
%= include '/include/project_header'; % if (my $message = flash('message')) {
<%= $message %>
% } % if ($errors) {
% for my $error (@$errors) {

<%= $error %>

% }
% }

Import branch

query(op => 'import') %>" method="post">
%= "$user / $project";
%= text_field 'branch', placeholder => "Branch name", style => "margin-top:12px;width:250px";
%= submit_button 'Import', class => "btn"; <%= check_box force => 1 %> Force
%= "$remote_user / $remote_project";
% param(remote_branch => $remote_branch); %= select_field 'remote-branch' => $remote_branch_names, style => "width:250px";
%= include '/include/footer';