git-object-browser 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +17 -0
- data/htdocs/{css → common/css}/angular-ui.min.css +0 -0
- data/htdocs/{css → common/css}/bootstrap-responsive.css +0 -0
- data/htdocs/{css → common/css}/bootstrap-responsive.min.css +0 -0
- data/htdocs/{css → common/css}/bootstrap.css +0 -0
- data/htdocs/{css → common/css}/bootstrap.min.css +0 -0
- data/htdocs/{css → common/css}/font-awesome-ie7.css +0 -0
- data/htdocs/{css → common/css}/font-awesome.css +0 -0
- data/htdocs/{css → common/css}/main.css +0 -0
- data/htdocs/{font → common/font}/fontawesome-webfont.eot +0 -0
- data/htdocs/{font → common/font}/fontawesome-webfont.svg +0 -0
- data/htdocs/{font → common/font}/fontawesome-webfont.ttf +0 -0
- data/htdocs/{font → common/font}/fontawesome-webfont.woff +0 -0
- data/htdocs/{img → common/img}/glyphicons-halflings-white.png +0 -0
- data/htdocs/{img → common/img}/glyphicons-halflings.png +0 -0
- data/htdocs/common/js/main.js +495 -0
- data/htdocs/{js → common/js}/vendor/angular-bootstrap-prettify.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/angular-bootstrap.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/angular-cookies.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/angular-loader.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/angular-resource.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/angular-sanitize.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/angular-ui-ieshiv.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/angular-ui.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/angular.js +0 -0
- data/htdocs/{js → common/js}/vendor/angular.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/bootstrap.js +0 -0
- data/htdocs/{js → common/js}/vendor/bootstrap.min.js +0 -0
- data/htdocs/{js → common/js}/vendor/html5shiv.js +0 -0
- data/htdocs/{js → common/js}/vendor/jquery-1.8.2.min.js +0 -0
- data/htdocs/{templates → common/templates}/directory.html +2 -2
- data/htdocs/common/templates/error.html +6 -0
- data/htdocs/{templates → common/templates}/file.html +0 -0
- data/htdocs/{templates → common/templates}/git.html +0 -0
- data/htdocs/{templates → common/templates}/index.html +1 -1
- data/htdocs/{templates → common/templates}/index_entry.html +0 -0
- data/htdocs/{templates → common/templates}/info_refs.html +2 -2
- data/htdocs/{templates → common/templates}/loading.html +0 -0
- data/htdocs/{templates → common/templates}/notfound.html +1 -2
- data/htdocs/{templates → common/templates}/object.html +1 -1
- data/htdocs/{templates → common/templates}/objects.html +3 -3
- data/htdocs/{templates → common/templates}/pack_file.html +1 -1
- data/htdocs/common/templates/pack_index.html +39 -0
- data/htdocs/{templates → common/templates}/packed_object.html +4 -4
- data/htdocs/{templates → common/templates}/packed_refs.html +2 -2
- data/htdocs/{templates → common/templates}/ref.html +0 -0
- data/htdocs/common/templates/reflog.html +29 -0
- data/htdocs/config.js +6 -0
- data/htdocs/default.js +7 -0
- data/htdocs/index.html +52 -20
- data/lib/git-object-browser.rb +12 -4
- data/lib/git-object-browser/dumper/directories_dumper.rb +42 -0
- data/lib/git-object-browser/dumper/index_dumper.rb +20 -7
- data/lib/git-object-browser/dumper/info_refs_dumper.rb +37 -0
- data/lib/git-object-browser/dumper/main.rb +188 -81
- data/lib/git-object-browser/dumper/objects_dumper.rb +46 -0
- data/lib/git-object-browser/dumper/pack_indexes_dumper.rb +85 -0
- data/lib/git-object-browser/dumper/packed_objects_dumper.rb +36 -0
- data/lib/git-object-browser/dumper/packed_refs_dumper.rb +37 -0
- data/lib/git-object-browser/dumper/plain_files_dumper.rb +74 -0
- data/lib/git-object-browser/dumper/refs_dumper.rb +46 -0
- data/lib/git-object-browser/main.rb +22 -6
- data/lib/git-object-browser/models/directory.rb +5 -3
- data/lib/git-object-browser/models/git_date.rb +26 -0
- data/lib/git-object-browser/models/git_object.rb +1 -1
- data/lib/git-object-browser/models/pack_file.rb +1 -1
- data/lib/git-object-browser/models/pack_index.rb +139 -25
- data/lib/git-object-browser/models/packed_object.rb +1 -1
- data/lib/git-object-browser/models/reflog.rb +54 -0
- data/lib/git-object-browser/models/wrapped_object.rb +40 -0
- data/lib/git-object-browser/server/git_servlet.rb +130 -100
- data/lib/git-object-browser/server/main.rb +1 -1
- data/lib/git-object-browser/version.rb +1 -1
- metadata +62 -50
- data/htdocs/js/main.js +0 -285
- data/htdocs/templates/pack_index.html +0 -37
- data/lib/git-object-browser/dumper/object_dumper.rb +0 -20
- data/lib/git-object-browser/dumper/pack_index_dumper.rb +0 -21
- data/lib/git-object-browser/dumper/packed_object_dumper.rb +0 -19
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -8,8 +8,8 @@
|
|
8
8
|
<th>mtime</th>
|
9
9
|
</thead>
|
10
10
|
<tbody>
|
11
|
-
<tr data-ng-repeat="entry in object.entries">
|
12
|
-
<td><i data-entry-icon="entry.type"></i> <a href="
|
11
|
+
<tr data-ng-repeat="entry in object.entries" data-ng-class="{error: diff[path + '/' + entry.basename]}">
|
12
|
+
<td><i data-entry-icon="entry.type"></i> <a href="#{{basedir}}/{{path}}/{{entry.basename}}">{{entry.basename}}</a>
|
13
13
|
</td>
|
14
14
|
<td>
|
15
15
|
{{entry.size}}
|
File without changes
|
File without changes
|
@@ -30,7 +30,7 @@
|
|
30
30
|
</thead>
|
31
31
|
<tbody>
|
32
32
|
<tr data-ng-repeat="entry in object.entries">
|
33
|
-
<td><i class="icon-file"></i> <a href="
|
33
|
+
<td><i class="icon-file"></i> <a href="#{{basedir}}/.git/index?sha1={{entry.sha1}}">{{entry.path}}</a></td>
|
34
34
|
<td><a href="#" data-ref-href="entry">{{entry.sha1}}</a></td>
|
35
35
|
</tr>
|
36
36
|
</tbody>
|
File without changes
|
@@ -18,10 +18,10 @@
|
|
18
18
|
<i data-entry-icon="'commit'"></i> <a data-ref-href="entry.tag_sha1">{{entry.tag_sha1}}</a>
|
19
19
|
</span>
|
20
20
|
</td>
|
21
|
-
<td><a href="
|
21
|
+
<td><a href="#{{basedir}}/.git/{{entry.ref}}">{{entry.ref}}</a></td>
|
22
22
|
</tr>
|
23
23
|
</tbody>
|
24
24
|
</table>
|
25
25
|
|
26
|
-
<a href="
|
26
|
+
<a href="#{{basedir}}/.git/packed-refs" data-ng-show="limited">Show All</a>
|
27
27
|
</article>
|
File without changes
|
@@ -26,7 +26,7 @@
|
|
26
26
|
<tr data-ng-repeat="prop in object.properties">
|
27
27
|
<th>{{prop.key}}</th>
|
28
28
|
<td data-ng-switch="prop.type">
|
29
|
-
<span data-ng-switch-when="sha1"><a href="
|
29
|
+
<span data-ng-switch-when="sha1"><a href="#{{basedir}}/.git/{{prop.path}}">{{prop.value}}</a></span>
|
30
30
|
<span data-ng-switch-when="user">{{prop.value}} <small style="color:#aaa">{{prop.date}}</small></span>
|
31
31
|
<span data-ng-switch-default>{{prop.value}}</span>
|
32
32
|
</td>
|
@@ -1,14 +1,14 @@
|
|
1
1
|
<h1><i class="icon-folder-open"></i> {{path}} <small>Directory</small></h1>
|
2
2
|
|
3
|
-
<p><i class="icon-folder-open"></i> <a href="
|
3
|
+
<p><i class="icon-folder-open"></i> <a href="#{{basedir}}/.git/objects/pack">pack</a></p>
|
4
4
|
|
5
5
|
<table class="table table-bordered table-hover">
|
6
6
|
<tbody>
|
7
7
|
<tr data-ng-repeat="rows in objectTable">
|
8
|
-
<td data-ng-repeat="cel in rows">
|
8
|
+
<td data-ng-repeat="cel in rows" data-ng-style="{background: diff['.git/objects/' + cel.basename]}">
|
9
9
|
<span data-ng-switch="cel.type">
|
10
10
|
<span data-ng-switch-when="empty"><span style="color:#eee">{{cel.basename}}</span></span>
|
11
|
-
<span data-ng-switch-default><a href="
|
11
|
+
<span data-ng-switch-default><a href="#{{basedir}}/.git/objects/{{cel.basename}}">{{cel.basename}}</a></span>
|
12
12
|
</span>
|
13
13
|
</td>
|
14
14
|
</tr>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
<th>number of objects</th><td>{{object.object_number}}</a></td>
|
10
10
|
</tr>
|
11
11
|
<tr>
|
12
|
-
<th>object entries</th><td><a href="
|
12
|
+
<th>object entries</th><td><a href="#{{basedir}}/{{indexUrl}}">see index</a></a></td>
|
13
13
|
</tr>
|
14
14
|
</table>
|
15
15
|
</article>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<article data-ng-controller="PackIndexCtrl" data-scroll-bottom="scrollBottom()">
|
2
|
+
<h1 style="font-size:1.8em;"><i data-entry-icon="'index'"></i> {{path}} <small>Pack Index</small></h1>
|
3
|
+
|
4
|
+
<table class="table table-striped">
|
5
|
+
<thead>
|
6
|
+
<tr>
|
7
|
+
<th><a href="#{{basedir}}/{{path}}?order=sha1">#</a></th>
|
8
|
+
<th>fanout</th>
|
9
|
+
<th>sha1</th>
|
10
|
+
<th>crc32</th>
|
11
|
+
<th><a href="#{{basedir}}/{{path}}?order=offset">offset</a></th>
|
12
|
+
<th>type</th>
|
13
|
+
<th>size</th>
|
14
|
+
</tr>
|
15
|
+
</thead>
|
16
|
+
<tbody>
|
17
|
+
<tr data-ng-repeat="(i, entry) in object.entries">
|
18
|
+
<td>{{entry.index}}</td>
|
19
|
+
|
20
|
+
<td>
|
21
|
+
<span data-ng-show="entry.fanout_max"><i class="icon-arrow-up"></i> {{entry.fanout_min}} - {{entry.fanout_max}}</span>
|
22
|
+
<span data-ng-show="entry.fanout_min && ! entry.fanout_max"><i class="icon-arrow-up"></i> {{entry.fanout_min}}</span>
|
23
|
+
</td>
|
24
|
+
<td>{{entry.sha1}}</td>
|
25
|
+
<td>{{entry.crc32}}</td>
|
26
|
+
<td><a href="#{{basedir}}/{{packUrl}}?offset={{entry.offset}}">{{entry.offset}}</a></td>
|
27
|
+
<td><i data-entry-icon="entry.type"></i> {{entry.type}}
|
28
|
+
<span data-ng-show="entry.base_offset"><a href="#{{basedir}}/{{packUrl}}?offset={{entry.base_offset}}">{{entry.base_offset}}</a></span>
|
29
|
+
<span data-ng-show="entry.base_sha1"><a data-ref-href="entry.base_sha1">{{entry.base_sha1.substr(0,6)}}</a></span>
|
30
|
+
</td>
|
31
|
+
<td>{{entry.size}}</td>
|
32
|
+
</tr>
|
33
|
+
</tbody>
|
34
|
+
</table>
|
35
|
+
|
36
|
+
<p data-ng-show="loading">Loading...</p>
|
37
|
+
|
38
|
+
</article>
|
39
|
+
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<li class="active"><a href="#parsed" data-toggle="tab">Parsed</a></li>
|
7
7
|
<li data-ng-show="object.object.content"><a href="#plain" data-toggle="tab">Plain</a></li>
|
8
8
|
<li data-ng-show="object.delta_commands"><a href="#deltas" data-toggle="tab">Deltas</a></li>
|
9
|
-
<li><a href="
|
9
|
+
<li><a href="#{{basedir}}/{{path.replace('.pack', '.idx')}}"><i class="icon-list"></i> Index</a></li>
|
10
10
|
</ul>
|
11
11
|
|
12
12
|
<div class="tab-content">
|
@@ -20,11 +20,11 @@
|
|
20
20
|
</tr>
|
21
21
|
<tr>
|
22
22
|
<th>offset</th>
|
23
|
-
<td><a href="
|
23
|
+
<td><a href="#{{basedir}}/{{path}}?offset={{object.offset}}">{{object.offset}}</a></td>
|
24
24
|
</tr>
|
25
25
|
<tr data-ng-show="object.base_offset">
|
26
26
|
<th>base offset</th>
|
27
|
-
<td><a href="
|
27
|
+
<td><a href="#{{basedir}}/{{path}}?offset={{object.base_offset}}">{{object.base_offset}}</a></td>
|
28
28
|
</tr>
|
29
29
|
<tr data-ng-show="object.base_offset">
|
30
30
|
<th>delta type</th>
|
@@ -47,7 +47,7 @@
|
|
47
47
|
<tr data-ng-repeat="prop in object.object.properties">
|
48
48
|
<th>{{prop.key}}</th>
|
49
49
|
<td data-ng-switch="prop.type">
|
50
|
-
<span data-ng-switch-when="sha1"><a href="
|
50
|
+
<span data-ng-switch-when="sha1"><a href="#{{basedir}}/.git/{{prop.path}}">{{prop.value}}</a></span>
|
51
51
|
<span data-ng-switch-when="user">{{prop.value}} <small style="color:#aaa">{{prop.date}}</small></span>
|
52
52
|
<span data-ng-switch-default>{{prop.value}}</span>
|
53
53
|
</td>
|
@@ -26,11 +26,11 @@
|
|
26
26
|
<i data-entry-icon="'commit'"></i> <a data-ref-href="entry.tag_sha1">{{entry.tag_sha1}}</a>
|
27
27
|
</span>
|
28
28
|
</td>
|
29
|
-
<td><a href="
|
29
|
+
<td><a href="#{{basedir}}/.git/packed-refs?ref={{entry.ref}}">{{entry.ref}}</a></td>
|
30
30
|
</tr>
|
31
31
|
</tbody>
|
32
32
|
</table>
|
33
|
-
<a href="
|
33
|
+
<a href="#{{basedir}}/.git/packed-refs" data-ng-show="limited">Show All</a>
|
34
34
|
|
35
35
|
</div>
|
36
36
|
<div class="tab-pane" id="plain">
|
File without changes
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<article>
|
2
|
+
<h1><i data-entry-icon="'reflog'"></i> {{path}} <small>Reflog</small></h1>
|
3
|
+
|
4
|
+
<div class="tabbable">
|
5
|
+
<ul class="nav nav-tabs">
|
6
|
+
<li class="active"><a href="#parsed" data-toggle="tab">Parsed</a></li>
|
7
|
+
<li><a href="#plain" data-toggle="tab">Plain</a></li>
|
8
|
+
</ul>
|
9
|
+
<div class="tab-content">
|
10
|
+
<div class="tab-pane active" id="parsed">
|
11
|
+
|
12
|
+
<pre data-ng-repeat="entry in object.entries">
|
13
|
+
<a data-ref-href="entry.sha1_from">{{entry.sha1_from}}</a> <a data-ref-href="entry.sha1_to">{{entry.sha1_to}}</a>
|
14
|
+
{{entry.name}} <{{entry.email}}> {{entry.date}}
|
15
|
+
|
16
|
+
{{entry.message}}
|
17
|
+
</pre>
|
18
|
+
|
19
|
+
</div>
|
20
|
+
<div class="tab-pane" id="plain">
|
21
|
+
|
22
|
+
<pre>{{object.content}}</pre>
|
23
|
+
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
|
29
|
+
</article>
|
data/htdocs/config.js
ADDED
data/htdocs/default.js
ADDED
data/htdocs/index.html
CHANGED
@@ -10,21 +10,38 @@
|
|
10
10
|
<meta name="description" content="">
|
11
11
|
<meta name="viewport" content="width=device-width">
|
12
12
|
|
13
|
-
<link rel="stylesheet" href="css/bootstrap.min.css">
|
13
|
+
<link rel="stylesheet" href="common/css/bootstrap.min.css">
|
14
14
|
<style>
|
15
15
|
body {
|
16
16
|
padding-top: 60px;
|
17
17
|
padding-bottom: 40px;
|
18
18
|
}
|
19
|
+
|
20
|
+
.sidenote {
|
21
|
+
margin-top: 10px;
|
22
|
+
margin-left: 10px;
|
23
|
+
border: solid 1px #ccc;
|
24
|
+
padding: 18px;
|
25
|
+
-webkit-border-radius: 5px;
|
26
|
+
-moz-border-radius: 5px;
|
27
|
+
border-radius: 5px;
|
28
|
+
}
|
29
|
+
|
30
|
+
.sidenote h3 {
|
31
|
+
margin: 0;
|
32
|
+
margin-bottom: 10px;
|
33
|
+
line-height: 20px;
|
34
|
+
font-size: 1em;
|
35
|
+
}
|
19
36
|
</style>
|
20
|
-
<link rel="stylesheet" href="css/bootstrap-responsive.min.css">
|
21
|
-
<link rel="stylesheet" href="css/main.css">
|
22
|
-
<link rel="stylesheet" href="css/angular-ui.min.css">
|
23
|
-
<link rel="stylesheet" href="css/font-awesome.css">
|
37
|
+
<link rel="stylesheet" href="common/css/bootstrap-responsive.min.css">
|
38
|
+
<link rel="stylesheet" href="common/css/main.css">
|
39
|
+
<link rel="stylesheet" href="common/css/angular-ui.min.css">
|
40
|
+
<link rel="stylesheet" href="common/css/font-awesome.css">
|
24
41
|
|
25
42
|
<!--[if lt IE 9]>
|
26
43
|
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
27
|
-
<script>window.html5 || document.write('<script src="js/vendor/html5shiv.js"><\/script>')</script>
|
44
|
+
<script>window.html5 || document.write('<script src="common/js/vendor/html5shiv.js"><\/script>')</script>
|
28
45
|
<![endif]-->
|
29
46
|
</head>
|
30
47
|
<body data-ng-app="GitObjectBrowser">
|
@@ -43,9 +60,19 @@
|
|
43
60
|
<span class="icon-bar"></span>
|
44
61
|
</a>
|
45
62
|
<a class="brand" href="/"><i class="icon-comment icon-white"></i> GOB</a>
|
46
|
-
<div class="nav-collapse collapse">
|
63
|
+
<div class="nav-collapse collapse" data-ng-controller="MenuCtrl">
|
47
64
|
<ul class="nav">
|
48
|
-
<li class="active"><a href="/">Home</a></li>
|
65
|
+
<li class="active" data-ng-show="steps.length == 0" style="display:none"><a href="/">Home</a></li>
|
66
|
+
|
67
|
+
<li class="dropdown" data-ng-show="steps.length > 0" style="display:none">
|
68
|
+
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Steps <b class="caret"></b></a>
|
69
|
+
<ul class="dropdown-menu">
|
70
|
+
<li data-ng-repeat="step in steps"><a data-ng-href="#/{{step.name}}/.git/" data-ng-click="">{{step.label}}</a></li>
|
71
|
+
</ul>
|
72
|
+
</li>
|
73
|
+
<li data-ng-show="steps.length > 0" style="display:none"><a data-ng-click="stepPrev()" href=""><i class="icon-chevron-left"></i>Prev</a></li>
|
74
|
+
<li data-ng-show="steps.length > 0" style="display:none"><a data-ng-click="stepNext()" href="">Next<i class="icon-chevron-right"></i></a></li>
|
75
|
+
|
49
76
|
<li class="dropdown">
|
50
77
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Documents <b class="caret"></b></a>
|
51
78
|
<ul class="dropdown-menu">
|
@@ -82,13 +109,16 @@
|
|
82
109
|
<div class="span3">
|
83
110
|
<ul class="nav nav-list">
|
84
111
|
<li class="nav-header">Git Object Browser</li>
|
85
|
-
<li class=""><a href="
|
86
|
-
<li class=""><a href="
|
87
|
-
<li class=""><a href="
|
88
|
-
<li class=""><a href="
|
89
|
-
<li class=""><a href="
|
90
|
-
<li class=""><a href="
|
112
|
+
<li class=""><a href="#{{basedir}}/.git/"><i data-entry-icon="'directory'"></i>.git</a></li>
|
113
|
+
<li class=""><a href="#{{basedir}}/.git/objects"><i data-entry-icon="'directory'"></i> objects</a></li>
|
114
|
+
<li class=""><a href="#{{basedir}}/.git/objects/pack"><i data-entry-icon="'directory'"></i> pack</a></li>
|
115
|
+
<li class=""><a href="#{{basedir}}/.git/refs"><i data-entry-icon="'directory'"></i> refs</a></li>
|
116
|
+
<li class=""><a href="#{{basedir}}/.git/HEAD"><i data-entry-icon="'ref'"></i> HEAD</a></li>
|
117
|
+
<li class=""><a href="#{{basedir}}/.git/index"><i data-entry-icon="'index'"></i> index</a></li>
|
91
118
|
</ul>
|
119
|
+
|
120
|
+
<article class="sidenote" data-ng-bind-html-unsafe="note" style="display:none" data-ng-show="note">
|
121
|
+
</article>
|
92
122
|
</div>
|
93
123
|
|
94
124
|
<div class="span9">
|
@@ -103,12 +133,14 @@
|
|
103
133
|
</div> <!-- /container -->
|
104
134
|
|
105
135
|
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
|
106
|
-
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.2.min.js"><\/script>')</script>
|
107
|
-
<script src="js/vendor/bootstrap.min.js"></script>
|
108
|
-
<script src="js/vendor/angular.js"></script>
|
109
|
-
<script src="js/vendor/angular-resource.min.js"></script>
|
110
|
-
<script src="js/vendor/angular-ui.min.js"></script>
|
136
|
+
<script>window.jQuery || document.write('<script src="common/js/vendor/jquery-1.8.2.min.js"><\/script>')</script>
|
137
|
+
<script src="common/js/vendor/bootstrap.min.js"></script>
|
138
|
+
<script src="common/js/vendor/angular.js"></script>
|
139
|
+
<script src="common/js/vendor/angular-resource.min.js"></script>
|
140
|
+
<script src="common/js/vendor/angular-ui.min.js"></script>
|
111
141
|
|
112
|
-
<script src="
|
142
|
+
<script src="default.js"></script>
|
143
|
+
<script src="config.js"></script>
|
144
|
+
<script src="common/js/main.js"></script>
|
113
145
|
</body>
|
114
146
|
</html>
|
data/lib/git-object-browser.rb
CHANGED
@@ -13,9 +13,9 @@ require 'stringio'
|
|
13
13
|
require 'optparse'
|
14
14
|
|
15
15
|
require "git-object-browser/main"
|
16
|
-
require "git-object-browser/models/ref"
|
17
16
|
require "git-object-browser/models/bindata"
|
18
17
|
require "git-object-browser/models/directory"
|
18
|
+
require "git-object-browser/models/git_date"
|
19
19
|
require "git-object-browser/models/git_object"
|
20
20
|
require "git-object-browser/models/index"
|
21
21
|
require "git-object-browser/models/index_entry"
|
@@ -27,13 +27,21 @@ require "git-object-browser/models/pack_index"
|
|
27
27
|
require "git-object-browser/models/packed_object"
|
28
28
|
require "git-object-browser/models/packed_refs"
|
29
29
|
require "git-object-browser/models/plain_file"
|
30
|
+
require "git-object-browser/models/ref"
|
31
|
+
require "git-object-browser/models/reflog"
|
32
|
+
require "git-object-browser/models/wrapped_object"
|
30
33
|
require "git-object-browser/server/main"
|
31
34
|
require "git-object-browser/server/git_servlet"
|
32
35
|
|
33
36
|
require "git-object-browser/dumper/main"
|
34
|
-
require "git-object-browser/dumper/
|
37
|
+
require "git-object-browser/dumper/objects_dumper"
|
35
38
|
require "git-object-browser/dumper/index_dumper"
|
36
|
-
require "git-object-browser/dumper/
|
37
|
-
require "git-object-browser/dumper/
|
39
|
+
require "git-object-browser/dumper/directories_dumper"
|
40
|
+
require "git-object-browser/dumper/plain_files_dumper"
|
41
|
+
require "git-object-browser/dumper/refs_dumper"
|
42
|
+
require "git-object-browser/dumper/packed_refs_dumper"
|
43
|
+
require "git-object-browser/dumper/pack_indexes_dumper"
|
44
|
+
require "git-object-browser/dumper/packed_objects_dumper"
|
45
|
+
require "git-object-browser/dumper/info_refs_dumper"
|
38
46
|
|
39
47
|
GitObjectBrowser::Main.new().execute if __FILE__ == $0
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
module GitObjectBrowser
|
4
|
+
|
5
|
+
module Dumper
|
6
|
+
|
7
|
+
class DirectoriesDumper
|
8
|
+
|
9
|
+
def initialize(root, outdir)
|
10
|
+
@root = root
|
11
|
+
@outdir = outdir
|
12
|
+
end
|
13
|
+
|
14
|
+
def dump
|
15
|
+
dirs = ['']
|
16
|
+
Dir.chdir(@root) do
|
17
|
+
Dir.glob("**/*") do |path|
|
18
|
+
next if path == 'dump' # FIXME
|
19
|
+
dirs << path if File.directory?(path)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
dirs.each do |path|
|
24
|
+
outfile = File.join(@outdir, (path == '') ? '_git.json' : "#{ path }.json")
|
25
|
+
FileUtils.mkdir_p(File.dirname(outfile))
|
26
|
+
|
27
|
+
puts "Write: #{path}\n"
|
28
|
+
obj_file = File.join(@root, path)
|
29
|
+
File.open(outfile, "w") do |output|
|
30
|
+
dump_object(path, output)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def dump_object(path, output)
|
36
|
+
obj = GitObjectBrowser::Models::Directory.new(@root, path)
|
37
|
+
wrapped = GitObjectBrowser::Models::WrappedObject.new(nil, path, obj)
|
38
|
+
output << JSON.pretty_generate(wrapped.to_hash)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|