* Refactoring.
[?]
Mar 13, 2009, 3:41 PM
UWVMQIAC2HQNSG2JQOPZGUOCQ5V2JFP2F7RCTF3WJLK7NHSD5PAACDependencies
- [2]
RP6WDKE2 - [3]
AKAZKCR6* At top-level and for each project, provide two channels: "latest" - [4]
3HZY24CX* Make jobsets viewable under - [5]
S66BOMVU* Added authentication. - [6]
2AIIYGI5* Show job status and all builds for a project. - [7]
ECBA3GQO* Make the schema class names match the case of the SQL table names. - [8]
HCKFTNQ6 - [9]
D5QIOJGP* Move everything up one directory. - [10]
QU5I5GCL - [11]
G6HJY2V4 - [12]
I35CIZI7 - [13]
NDL67SQT* XHTML validity. - [14]
JFZNAYJX* Showing releases. - [15]
5IK6NYKF - [16]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [17]
US27ZTX5* HydraFrontend -> Hydra. - [18]
3E6IP3R3* Add the name of the jobset to ReleaseSetJobs, otherwise we can't - [19]
7UJ5YV4V* Provide a channel for each project containing all the latest - [20]
V4RNHJNR* Add a link to each project's homepage. Suggested by karltk. - [21]
ZNFDFJHG* Provide a redirect to the latest successful release in a release set - [22]
A52HEFHQ* Allow builds to be restarted (if they failed with a transient error, - [23]
YTSIRIMK* Separate job status and all builds pages. - [24]
LQ5QEDVV - [25]
JD27RBKM - [26]
LBNVQXUB* Build the /build stuff in a separate controller. - [27]
W6DC6K4I* Happy Javascript hacking. - [28]
6LTPI6B2 - [29]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [30]
EYNG4EL4* Regenerate the bindings from a clean sqlite database. - [31]
GCHNNFZP - [32]
2AUODJBT - [33]
IK53RV4V - [34]
5NO7NCKT* Refactoring. - [35]
OD5FSS5A* Quick hack to allow viewing of dependency graphs (via nix-store -q - [36]
FPK5LF53* Put the project-related actions in a separate controller. Put the - [37]
7YBYT2LQ - [38]
IGNQFFV7* Put the release sets in the navbar. - [39]
PBFZEQLZ - [40]
IN272KZW* Automatically keep all builds in the latest successful release in - [41]
TQKGQ5R3 - [42]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [43]
RU7AQO7U* Role-based access control. Only admins can create projects. Only - [*]
J5UVLXOK* Start of a basic Catalyst web interface.
Change contents
- replacement in src/lib/Hydra/Controller/Build.pm at line 20
$c->stash->{curProject} = $c->stash->{build}->project;$c->stash->{project} = $c->stash->{build}->project; - replacement in src/lib/Hydra/Controller/Job.pm at line 13[5.119]→[5.119:290](∅→∅),[5.290]→[5.320:321](∅→∅),[5.320]→[5.320:321](∅→∅),[5.321]→[5.291:476](∅→∅),[5.476]→[5.321:358](∅→∅),[5.321]→[5.321:358](∅→∅)
# !!! cut&paste from Project::project.my $project = $c->model('DB::Projects')->find($projectName)or notFound($c, "Project $projectName doesn't exist.");$c->stash->{curProject} = $project;$c->stash->{jobset} = $project->jobsets->find({name => $jobsetName})or notFound($c, "Jobset $jobsetName doesn't exist.");$c->stash->{jobName} = $jobName;$c->stash->{job} = $c->model('DB::Jobs')->find({project => $projectName, jobset => $jobsetName, name => $jobName})or notFound($c, "Job $projectName:$jobsetName:$jobName doesn't exist.");$c->stash->{project} = $c->stash->{job}->project;$c->stash->{jobset} = $c->stash->{job}->jobset; - replacement in src/lib/Hydra/Controller/Job.pm at line 29
$c->stash->{allBuilds} =$c->stash->{jobset}->builds->search({job => $c->stash->{jobName}});$c->stash->{allBuilds} = $c->stash->{job}->builds; - replacement in src/lib/Hydra/Controller/Job.pm at line 31
$c->stash->{curProject}->name . "-" . $c->stash->{jobset}->name . "-" . $c->stash->{jobName};$c->stash->{project}->name . "-" . $c->stash->{jobset}->name . "-" . $c->stash->{job}->name; - replacement in src/lib/Hydra/Controller/Jobset.pm at line 16
$c->stash->{curProject} = $project;$c->stash->{project} = $project; - replacement in src/lib/Hydra/Controller/Jobset.pm at line 35
$c->stash->{curProject}->name . "-" . $c->stash->{jobset}->name;$c->stash->{project}->name . "-" . $c->stash->{jobset}->name; - replacement in src/lib/Hydra/Controller/Project.pm at line 16
$c->stash->{curProject} = $project;$c->stash->{project} = $project; - replacement in src/lib/Hydra/Controller/Project.pm at line 25
getBuildStats($c, scalar $c->stash->{curProject}->builds);getBuildStats($c, scalar $c->stash->{project}->builds); - replacement in src/lib/Hydra/Controller/Project.pm at line 32
requireProjectOwner($c, $c->stash->{curProject});requireProjectOwner($c, $c->stash->{project}); - replacement in src/lib/Hydra/Controller/Project.pm at line 42
requireProjectOwner($c, $c->stash->{curProject});requireProjectOwner($c, $c->stash->{project}); - replacement in src/lib/Hydra/Controller/Project.pm at line 47
updateProject($c, $c->stash->{curProject});updateProject($c, $c->stash->{project}); - replacement in src/lib/Hydra/Controller/Project.pm at line 57
requireProjectOwner($c, $c->stash->{curProject});requireProjectOwner($c, $c->stash->{project}); - replacement in src/lib/Hydra/Controller/Project.pm at line 62
$c->stash->{curProject}->delete;$c->stash->{project}->delete; - replacement in src/lib/Hydra/Controller/Project.pm at line 227
$c->stash->{allBuilds} = $c->stash->{curProject}->builds;$c->stash->{channelBaseName} = $c->stash->{curProject}->name;$c->stash->{allBuilds} = $c->stash->{project}->builds;$c->stash->{channelBaseName} = $c->stash->{project}->name; - replacement in src/lib/Hydra/Controller/Root.pm at line 71
$c->stash->{curProject} = $project;$c->stash->{project} = $project; - replacement in src/lib/Hydra/Controller/Root.pm at line 82
$c->stash->{curProject} = $project;$c->stash->{project} = $project; - replacement in src/lib/Hydra/Controller/Root.pm at line 178
$c->stash->{curProject} = $project;$c->stash->{project} = $project; - replacement in src/root/all.tt at line 5
[% IF jobName %]for Job [% curProject.name %]:[% jobset.name %]:[% jobName %][% ELSIF jobset %]for Jobset [% curProject.name %]:[% jobset.name %][% ELSIF curProject %] for Project <tt>[% curProject.name %]</tt>[% END %]</h1>[% IF job %]for Job [% project.name %]:[% jobset.name %]:[% job.name %][% ELSIF jobset %]for Jobset [% project.name %]:[% jobset.name %][% ELSIF project %] for Project <tt>[% project.name %]</tt>[% END %]</h1> - replacement in src/root/edit-releaseset.tt at line 1
[% WRAPPER layout.tt title=(create ? "New Release Set" : "Release Set ‘$curProject.name:$releaseSet.name’") %][% WRAPPER layout.tt title=(create ? "New Release Set" : "Release Set ‘$project.name:$releaseSet.name’") %] - replacement in src/root/edit-releaseset.tt at line 5
<h1>[% IF create %]New Release Set[% ELSE %]Release Set <tt>[% curProject.name %]:[% releaseSet.name %]</tt>[% END %]</h1><h1>[% IF create %]New Release Set[% ELSE %]Release Set <tt>[% project.name %]:[% releaseSet.name %]</tt>[% END %]</h1> - replacement in src/root/edit-releaseset.tt at line 24
<form action="[% IF create %][% c.uri_for('/create_releaseset' curProject.name 'submit') %][% ELSE %][% c.uri_for('/releases' curProject.name releaseSet.name 'submit') %][% END %]" method="post"><form action="[% IF create %][% c.uri_for('/create_releaseset' project.name 'submit') %][% ELSE %][% c.uri_for('/releases' project.name releaseSet.name 'submit') %][% END %]" method="post"> - replacement in src/root/edit-releaseset.tt at line 89
<form action="[% c.uri_for('/releases' curProject.name releaseSet.name 'delete') %]" method="post"><form action="[% c.uri_for('/releases' project.name releaseSet.name 'delete') %]" method="post"> - replacement in src/root/jobstatus.tt at line 4
<h1>Job Status[% IF curProject %] of Project <tt>[% curProject.name %]</tt>[% END %]</h1><h1>Job Status[% IF project %] of Project <tt>[% project.name %]</tt>[% END %]</h1> - replacement in src/root/layout.tt at line 102[5.1317]→[5.4173:4221](∅→∅),[5.4173]→[5.4173:4221](∅→∅),[5.4221]→[5.1318:1416](∅→∅),[5.1416]→[5.1612:1749](∅→∅),[5.1749]→[5.1540:1599](∅→∅),[5.1540]→[5.1540:1599](∅→∅)
[% FOREACH project IN projects %]<li [% IF curUri == c.uri_for('/project' project.name) %]class="active"[% END %]><div class="title"><a href="[% c.uri_for('/project' project.name) %]">[% HTML.escape(project.displayname) %]</a></div>[% IF curProject.name == project.name %][% FOREACH project_ IN projects %]<li [% IF curUri == c.uri_for('/project' project_.name) %]class="active"[% END %]><div class="title"><a href="[% c.uri_for('/project' project_.name) %]">[% HTML.escape(project_.displayname) %]</a></div>[% IF project.name == project_.name %] - edit in src/root/layout.tt at line 123
- replacement in src/root/project.tt at line 1
[% WRAPPER layout.tt title=(edit ? (create ? "New Project" : "Editing Project ‘$curProject.name’") : "Project ‘$curProject.name’") %][% WRAPPER layout.tt title=(edit ? (create ? "New Project" : "Editing Project ‘$project.name’") : "Project ‘$project.name’") %] - replacement in src/root/project.tt at line 136
<form action="[% IF create %][% c.uri_for('/create-project/submit') %][% ELSE %][% c.uri_for('/project' curProject.name 'submit') %][% END %]" method="post"><form action="[% IF create %][% c.uri_for('/create-project/submit') %][% ELSE %][% c.uri_for('/project' project.name 'submit') %][% END %]" method="post"> - replacement in src/root/project.tt at line 143
<h1>Project <tt>[% curProject.name %]</tt></h1><h1>Project <tt>[% project.name %]</tt></h1> - replacement in src/root/project.tt at line 153
<td><tt>[% INCLUDE maybeEditString param="name" value=curProject.name %]</tt></td><td><tt>[% INCLUDE maybeEditString param="name" value=project.name %]</tt></td> - replacement in src/root/project.tt at line 158
<td>[% INCLUDE maybeEditString param="displayname" value=curProject.displayname %]</td><td>[% INCLUDE maybeEditString param="displayname" value=project.displayname %]</td> - replacement in src/root/project.tt at line 162
<td>[% INCLUDE maybeEditString param="description" value=curProject.description %]</td><td>[% INCLUDE maybeEditString param="description" value=project.description %]</td> - replacement in src/root/project.tt at line 168
[% INCLUDE maybeEditString param="homepage" value=curProject.homepage %][% INCLUDE maybeEditString param="homepage" value=project.homepage %] - replacement in src/root/project.tt at line 170
[% IF curProject.homepage %]<a [% HTML.attributes(href => curProject.homepage) %]>[% HTML.escape(curProject.homepage) %]</a>[% IF project.homepage %]<a [% HTML.attributes(href => project.homepage) %]>[% HTML.escape(project.homepage) %]</a> - replacement in src/root/project.tt at line 180
<td><tt>[% INCLUDE maybeEditString param="owner" value=curProject.owner.username edit=(edit && c.check_user_roles('admin')) %]</tt></td><td><tt>[% INCLUDE maybeEditString param="owner" value=project.owner.username edit=(edit && c.check_user_roles('admin')) %]</tt></td> - replacement in src/root/project.tt at line 185
[% INCLUDE renderSelection param="enabled" curValue=curProject.enabled options={"1" = "Yes", "0" = "No"} %][% INCLUDE renderSelection param="enabled" curValue=project.enabled options={"1" = "Yes", "0" = "No"} %] - replacement in src/root/project.tt at line 202
[% IF curProject.jobsets && curProject.jobsets.size > 0 || edit %][% IF project.jobsets && project.jobsets.size > 0 || edit %] - replacement in src/root/project.tt at line 253
[% FOREACH jobset IN curProject.jobsets -%][% FOREACH jobset IN project.jobsets -%] - replacement in src/root/project.tt at line 274
<form action="[% c.uri_for('/project' curProject.name 'delete') %]" method="post"><form action="[% c.uri_for('/project' project.name 'delete') %]" method="post"> - replacement in src/root/releases.tt at line 8
[<a href="[% c.uri_for('/releases' curProject.name releaseSet.name "edit") %]">Edit</a>][<a href="[% c.uri_for('/release' curProject.name releaseSet.name "latest") %]">Latest</a>][<a href="[% c.uri_for('/releases' project.name releaseSet.name "edit") %]">Edit</a>][<a href="[% c.uri_for('/release' project.name releaseSet.name "latest") %]">Latest</a>] - replacement in src/root/releasesets.tt at line 8
<p>Project <tt>[% curProject.name %]</tt> has the following release sets:</p><p>Project <tt>[% project.name %]</tt> has the following release sets:</p> - replacement in src/root/releasesets.tt at line 13
<a href="[% c.uri_for('/releases' curProject.name releaseSet.name) %]"><tt>[% releaseSet.name %]</tt></a>[<a href="[% c.uri_for('/releases' curProject.name releaseSet.name "edit") %]">Edit</a>]<a href="[% c.uri_for('/releases' project.name releaseSet.name) %]"><tt>[% releaseSet.name %]</tt></a>[<a href="[% c.uri_for('/releases' project.name releaseSet.name "edit") %]">Edit</a>] - replacement in src/root/releasesets.tt at line 21
<p>Project <tt>[% curProject.name %]</tt> has no release sets.</p><p>Project <tt>[% project.name %]</tt> has no release sets.</p> - replacement in src/root/releasesets.tt at line 26
<p>[<a href="[% c.uri_for('/create_releaseset' curProject.name) %]">Create a new release set</a>]</p><p>[<a href="[% c.uri_for('/create_releaseset' project.name) %]">Create a new release set</a>]</p>