1 contributor
<%
my $state;
# API
my $api = gitprep_api;
# Default revision
my $rev = 'master';
# Parameters
my $user = param('user');
my $project = param('project');
my $object ||= param('object') || 'master/';
# Git
my $git = app->git;
# Check exsitence
my $desc;
my $commits_number;
my $readme;
if ($git->branch_exists($user, $project)) {
# Id and directory
my ($id, $dir) = @{$git->parse_object($user, $project, $object)};
# Tree id
my $tid;
my $commit = $git->parse_commit($user, $project, $id);
if (defined $dir && $dir ne '') {
$tid = $git->id_by_path($user, $project, $id, $dir, 'tree');
}
else { $tid = $commit->{tree} }
$self->render_not_found unless defined $tid;
# Commit log
my $latest_commit_log = $git->latest_commit_log($user, $project, $rev);
# Tree
my $trees = $git->trees($user, $project, $tid, $rev);
# Repository description
$desc = $git->description($user, $project);
# Commits number
$commits_number = $git->commits_number($user, $project, $rev);
# README
$readme = $git->blob_plain($user, $project, $rev, 'README');
# Variable for included template
stash(
commit => $commit,
latest_commit_log => $latest_commit_log,
trees => $trees,
dir => $dir,
rev => $rev,
title => "$user/$project"
);
$state = 'display';
}
else { $state = 'init' }
%>
% layout 'common';
% my $logined = $api->logined;
%= javascript begin
$(document).ready(function () {
var http_rep_url = '<%= url_for("$user/$project.git")->to_abs %>';
% my $execute_user = getpwuid($>);
% my $rep = $git->rep($user, $project);
% my $ssh_port = config->{basic}{ssh_port} || '';
var logined = <%= $logined ? 'true' : 'false' %>;
var ssh_rep_url = '';
if (logined) {
ssh_rep_url = '<%= url_for($rep)->to_abs->scheme('ssh')->userinfo($execute_user)->port($ssh_port) %>';
}
// Click HTTP button
$('#btn_http').on('click', function () {
$('#rep_url').val(http_rep_url);
$('#access').text('Read-only');
});
// Click SSH button
$('#btn_ssh').on('click', function () {
$('#rep_url').val(ssh_rep_url);
$('#access').text('Read-write');
});
// Initialize
if (logined) {
$('#btn_ssh').trigger('click');
}
else {
$('#btn_http').trigger('click');
}
});
% end
%= include '/include/header';
<div class="container">
%= include '/include/project_header';
% if ($state eq 'display') {
<h4 style="margin-top:0px">
<%= $desc %>
</h4>
<div class="border-gray" style="padding:0 5px;margin-bottom:10px">
<a class="btn" href="<%= url_for("/$user/$project/archive/master.zip") %>">
<i class="icon-arrow-down"></i>ZIP
</a>
<div class="input-append" style="margin-top:10px">
<div class="btn-group" data-toggle="buttons-radio">
<button class="btn" id="btn_http" style="border-radius:0">HTTP</button>
% if ($logined) {
<button class="btn" id="btn_ssh" style="border-radius:0">SSH</button>
% }
</div>
<input class="span8" id="rep_url" type="text" style="border-radius:0;">
</div>
<b><span id="access"></span></b> access
</div>
%= include '/include/code_menu', display => 'files';
<div class="row">
<div class="span6">
<a href="<%= url_for %>"><%= $project %></a>
</div>
<div class="span6 text-right">
<a href="<%= url_for("/$user/$project/commits/master") %>">
<%= $commits_number %> commits
</a>
</div>
</div>
%= include '/include/tree';
<div>
<h3>README</h3>
<pre><%= $readme %></pre>
</div>
% } elsif ($state eq 'init') {
<div class="text-center" style="margin-bottom:10px">
<b>Create a new repository on the command line</b>
</div>
% my $url = url_for->to_abs;
% my $ssh_port = config->{basic}{ssh_port};
% my $rep_home = app->git->rep_home;
% my $ssh_url = 'ssh://kimoto@' . $url->host
% . ($ssh_port ? ":$ssh_port" : '') . "$rep_home/$user/$project.git";
<pre style="margin-bottom:30px">
touch README
git init
git add README
git commit -m "first commit"
git remote add origin <%= $ssh_url %>
git push -u origin master</pre>
<div class="text-center" style="margin-bottom:10px">
<b>Push an existing repository from the command line</b>
</div>
<pre style="margin-bottom:30px">
git remote add origin <%= $ssh_url %>
git push -u origin master</pre>
% }
</div>
%= include '/include/footer';