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
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-object-browser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-28 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Browse git raw objects.
|
15
15
|
email:
|
@@ -28,60 +28,70 @@ files:
|
|
28
28
|
- Rakefile
|
29
29
|
- bin/git-object-browser
|
30
30
|
- git-object-browser.gemspec
|
31
|
-
- htdocs/css/angular-ui.min.css
|
32
|
-
- htdocs/css/bootstrap-responsive.css
|
33
|
-
- htdocs/css/bootstrap-responsive.min.css
|
34
|
-
- htdocs/css/bootstrap.css
|
35
|
-
- htdocs/css/bootstrap.min.css
|
36
|
-
- htdocs/css/font-awesome-ie7.css
|
37
|
-
- htdocs/css/font-awesome.css
|
38
|
-
- htdocs/css/main.css
|
39
|
-
- htdocs/font/fontawesome-webfont.eot
|
40
|
-
- htdocs/font/fontawesome-webfont.svg
|
41
|
-
- htdocs/font/fontawesome-webfont.ttf
|
42
|
-
- htdocs/font/fontawesome-webfont.woff
|
43
|
-
- htdocs/img/glyphicons-halflings-white.png
|
44
|
-
- htdocs/img/glyphicons-halflings.png
|
31
|
+
- htdocs/common/css/angular-ui.min.css
|
32
|
+
- htdocs/common/css/bootstrap-responsive.css
|
33
|
+
- htdocs/common/css/bootstrap-responsive.min.css
|
34
|
+
- htdocs/common/css/bootstrap.css
|
35
|
+
- htdocs/common/css/bootstrap.min.css
|
36
|
+
- htdocs/common/css/font-awesome-ie7.css
|
37
|
+
- htdocs/common/css/font-awesome.css
|
38
|
+
- htdocs/common/css/main.css
|
39
|
+
- htdocs/common/font/fontawesome-webfont.eot
|
40
|
+
- htdocs/common/font/fontawesome-webfont.svg
|
41
|
+
- htdocs/common/font/fontawesome-webfont.ttf
|
42
|
+
- htdocs/common/font/fontawesome-webfont.woff
|
43
|
+
- htdocs/common/img/glyphicons-halflings-white.png
|
44
|
+
- htdocs/common/img/glyphicons-halflings.png
|
45
|
+
- htdocs/common/js/main.js
|
46
|
+
- htdocs/common/js/vendor/angular-bootstrap-prettify.min.js
|
47
|
+
- htdocs/common/js/vendor/angular-bootstrap.min.js
|
48
|
+
- htdocs/common/js/vendor/angular-cookies.min.js
|
49
|
+
- htdocs/common/js/vendor/angular-loader.min.js
|
50
|
+
- htdocs/common/js/vendor/angular-resource.min.js
|
51
|
+
- htdocs/common/js/vendor/angular-sanitize.min.js
|
52
|
+
- htdocs/common/js/vendor/angular-ui-ieshiv.min.js
|
53
|
+
- htdocs/common/js/vendor/angular-ui.min.js
|
54
|
+
- htdocs/common/js/vendor/angular.js
|
55
|
+
- htdocs/common/js/vendor/angular.min.js
|
56
|
+
- htdocs/common/js/vendor/bootstrap.js
|
57
|
+
- htdocs/common/js/vendor/bootstrap.min.js
|
58
|
+
- htdocs/common/js/vendor/html5shiv.js
|
59
|
+
- htdocs/common/js/vendor/jquery-1.8.2.min.js
|
60
|
+
- htdocs/common/templates/directory.html
|
61
|
+
- htdocs/common/templates/error.html
|
62
|
+
- htdocs/common/templates/file.html
|
63
|
+
- htdocs/common/templates/git.html
|
64
|
+
- htdocs/common/templates/index.html
|
65
|
+
- htdocs/common/templates/index_entry.html
|
66
|
+
- htdocs/common/templates/info_refs.html
|
67
|
+
- htdocs/common/templates/loading.html
|
68
|
+
- htdocs/common/templates/notfound.html
|
69
|
+
- htdocs/common/templates/object.html
|
70
|
+
- htdocs/common/templates/objects.html
|
71
|
+
- htdocs/common/templates/pack_file.html
|
72
|
+
- htdocs/common/templates/pack_index.html
|
73
|
+
- htdocs/common/templates/packed_object.html
|
74
|
+
- htdocs/common/templates/packed_refs.html
|
75
|
+
- htdocs/common/templates/ref.html
|
76
|
+
- htdocs/common/templates/reflog.html
|
77
|
+
- htdocs/config.js
|
78
|
+
- htdocs/default.js
|
45
79
|
- htdocs/index.html
|
46
|
-
- htdocs/js/main.js
|
47
|
-
- htdocs/js/vendor/angular-bootstrap-prettify.min.js
|
48
|
-
- htdocs/js/vendor/angular-bootstrap.min.js
|
49
|
-
- htdocs/js/vendor/angular-cookies.min.js
|
50
|
-
- htdocs/js/vendor/angular-loader.min.js
|
51
|
-
- htdocs/js/vendor/angular-resource.min.js
|
52
|
-
- htdocs/js/vendor/angular-sanitize.min.js
|
53
|
-
- htdocs/js/vendor/angular-ui-ieshiv.min.js
|
54
|
-
- htdocs/js/vendor/angular-ui.min.js
|
55
|
-
- htdocs/js/vendor/angular.js
|
56
|
-
- htdocs/js/vendor/angular.min.js
|
57
|
-
- htdocs/js/vendor/bootstrap.js
|
58
|
-
- htdocs/js/vendor/bootstrap.min.js
|
59
|
-
- htdocs/js/vendor/html5shiv.js
|
60
|
-
- htdocs/js/vendor/jquery-1.8.2.min.js
|
61
|
-
- htdocs/templates/directory.html
|
62
|
-
- htdocs/templates/file.html
|
63
|
-
- htdocs/templates/git.html
|
64
|
-
- htdocs/templates/index.html
|
65
|
-
- htdocs/templates/index_entry.html
|
66
|
-
- htdocs/templates/info_refs.html
|
67
|
-
- htdocs/templates/loading.html
|
68
|
-
- htdocs/templates/notfound.html
|
69
|
-
- htdocs/templates/object.html
|
70
|
-
- htdocs/templates/objects.html
|
71
|
-
- htdocs/templates/pack_file.html
|
72
|
-
- htdocs/templates/pack_index.html
|
73
|
-
- htdocs/templates/packed_object.html
|
74
|
-
- htdocs/templates/packed_refs.html
|
75
|
-
- htdocs/templates/ref.html
|
76
80
|
- lib/git-object-browser.rb
|
81
|
+
- lib/git-object-browser/dumper/directories_dumper.rb
|
77
82
|
- lib/git-object-browser/dumper/index_dumper.rb
|
83
|
+
- lib/git-object-browser/dumper/info_refs_dumper.rb
|
78
84
|
- lib/git-object-browser/dumper/main.rb
|
79
|
-
- lib/git-object-browser/dumper/
|
80
|
-
- lib/git-object-browser/dumper/
|
81
|
-
- lib/git-object-browser/dumper/
|
85
|
+
- lib/git-object-browser/dumper/objects_dumper.rb
|
86
|
+
- lib/git-object-browser/dumper/pack_indexes_dumper.rb
|
87
|
+
- lib/git-object-browser/dumper/packed_objects_dumper.rb
|
88
|
+
- lib/git-object-browser/dumper/packed_refs_dumper.rb
|
89
|
+
- lib/git-object-browser/dumper/plain_files_dumper.rb
|
90
|
+
- lib/git-object-browser/dumper/refs_dumper.rb
|
82
91
|
- lib/git-object-browser/main.rb
|
83
92
|
- lib/git-object-browser/models/bindata.rb
|
84
93
|
- lib/git-object-browser/models/directory.rb
|
94
|
+
- lib/git-object-browser/models/git_date.rb
|
85
95
|
- lib/git-object-browser/models/git_object.rb
|
86
96
|
- lib/git-object-browser/models/index.rb
|
87
97
|
- lib/git-object-browser/models/index_entry.rb
|
@@ -94,6 +104,8 @@ files:
|
|
94
104
|
- lib/git-object-browser/models/packed_refs.rb
|
95
105
|
- lib/git-object-browser/models/plain_file.rb
|
96
106
|
- lib/git-object-browser/models/ref.rb
|
107
|
+
- lib/git-object-browser/models/reflog.rb
|
108
|
+
- lib/git-object-browser/models/wrapped_object.rb
|
97
109
|
- lib/git-object-browser/server/git_servlet.rb
|
98
110
|
- lib/git-object-browser/server/main.rb
|
99
111
|
- lib/git-object-browser/version.rb
|
@@ -187,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
199
|
version: '0'
|
188
200
|
segments:
|
189
201
|
- 0
|
190
|
-
hash:
|
202
|
+
hash: 803331941906399481
|
191
203
|
requirements: []
|
192
204
|
rubyforge_project:
|
193
205
|
rubygems_version: 1.8.24
|
data/htdocs/js/main.js
DELETED
@@ -1,285 +0,0 @@
|
|
1
|
-
|
2
|
-
angular.module('GitServices', ['ngResource'])
|
3
|
-
.factory('GitResource', function($resource) {
|
4
|
-
var resource = $resource('/.git/:path');
|
5
|
-
return resource;
|
6
|
-
})
|
7
|
-
.factory('PackedObjectResource', function($resource) {
|
8
|
-
var resource = $resource('/.git/:path?offset=:offset');
|
9
|
-
return resource;
|
10
|
-
});
|
11
|
-
|
12
|
-
angular.module('GitObjectBrowser', ['GitServices'])
|
13
|
-
.config(function($routeProvider) {
|
14
|
-
$routeProvider = angular.extend($routeProvider, {
|
15
|
-
|
16
|
-
// AngularJS doesn't support regular expressions in routes.
|
17
|
-
// http://stackoverflow.com/questions/12685085/angularjs-route-how-to-match-star-as-a-path
|
18
|
-
'whenPath': function(path, depth, route) {
|
19
|
-
for (var i = 1; i <= depth; i++) {
|
20
|
-
path += '/:path' + i;
|
21
|
-
this.when(path, route);
|
22
|
-
}
|
23
|
-
return this;
|
24
|
-
}
|
25
|
-
});
|
26
|
-
|
27
|
-
$routeProvider.
|
28
|
-
whenPath('/.git', 10, {controller:GitCtrl, templateUrl:'templates/git.html'}).
|
29
|
-
otherwise({redirectTo:'/.git/'});
|
30
|
-
})
|
31
|
-
|
32
|
-
.directive('entryIcon', function($parse) {
|
33
|
-
return function(scope, element, attrs) {
|
34
|
-
var icons = {
|
35
|
-
'directory': 'icon-folder-open',
|
36
|
-
'ref': 'icon-map-marker',
|
37
|
-
'info_refs': 'icon-map-marker',
|
38
|
-
'packed_refs': 'icon-map-marker',
|
39
|
-
'index': 'icon-list',
|
40
|
-
'file': 'icon-file',
|
41
|
-
'object': 'icon-comment',
|
42
|
-
'blob': 'icon-file',
|
43
|
-
'tree': 'icon-folder-open',
|
44
|
-
'commit': 'icon-ok',
|
45
|
-
'tag': 'icon-tag',
|
46
|
-
'ofs_delta': 'icon-arrow-up',
|
47
|
-
'ref_delta': 'icon-arrow-down'
|
48
|
-
};
|
49
|
-
|
50
|
-
var entryType = ($parse(attrs.entryIcon))(scope);
|
51
|
-
element.addClass(icons[entryType]);
|
52
|
-
}
|
53
|
-
})
|
54
|
-
|
55
|
-
.directive('modeIcon', function($parse) {
|
56
|
-
return function(scope, element, attrs) {
|
57
|
-
var mode = ($parse(attrs.modeIcon))(scope);
|
58
|
-
var iconClass;
|
59
|
-
if (120000 <= mode) {
|
60
|
-
iconClass = 'icon-share-alt';
|
61
|
-
} else if (100000 <= mode) {
|
62
|
-
iconClass = 'icon-file';
|
63
|
-
} else {
|
64
|
-
iconClass = 'icon-folder-open';
|
65
|
-
}
|
66
|
-
element.addClass(iconClass);
|
67
|
-
}
|
68
|
-
})
|
69
|
-
|
70
|
-
.directive('refHref', function($parse) {
|
71
|
-
return function(scope, element, attrs) {
|
72
|
-
var entry = ($parse(attrs.refHref))(scope);
|
73
|
-
var href = "";
|
74
|
-
var sha1 = null;
|
75
|
-
|
76
|
-
if (typeof(entry) == 'string') {
|
77
|
-
sha1 = entry;
|
78
|
-
} else if (entry && entry.sha1) {
|
79
|
-
sha1 = entry.sha1;
|
80
|
-
}
|
81
|
-
|
82
|
-
if (sha1 !== null) {
|
83
|
-
href = '#/.git/objects/' + sha1.substr(0, 2) + '/' + sha1.substr(2);
|
84
|
-
} else if (entry && entry.ref) {
|
85
|
-
href = '#/.git/' + entry.ref;
|
86
|
-
}
|
87
|
-
|
88
|
-
element.attr('href', href);
|
89
|
-
}
|
90
|
-
})
|
91
|
-
|
92
|
-
.filter('unixtime', function($filter) {
|
93
|
-
return function(input, format) {
|
94
|
-
return ($filter('date'))(input * 1000, format);
|
95
|
-
}
|
96
|
-
});
|
97
|
-
|
98
|
-
function GitCtrl($scope, $location, $routeParams, GitResource, PackedObjectResource) {
|
99
|
-
$scope.template = 'templates/loading.html';
|
100
|
-
var path = '';
|
101
|
-
for (var i = 1; i <= 10; i++) {
|
102
|
-
if ($routeParams['path' + i]) {
|
103
|
-
if (i > 1) path += '/';
|
104
|
-
path += $routeParams['path' + i];
|
105
|
-
}
|
106
|
-
}
|
107
|
-
|
108
|
-
$scope.objectTable = function(entries) {
|
109
|
-
var rows = [];
|
110
|
-
var hash = {};
|
111
|
-
|
112
|
-
angular.forEach(entries, function(entry) {
|
113
|
-
hash[entry.basename] = entry;
|
114
|
-
})
|
115
|
-
|
116
|
-
var hex = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
|
117
|
-
for (var i = 0; i < 16; i++) {
|
118
|
-
var cols = [];
|
119
|
-
for (var j = 0; j < 16; j++) {
|
120
|
-
if (hash[hex[i] + hex[j]]) {
|
121
|
-
cols[j] = hash[hex[i] + hex[j]];
|
122
|
-
} else {
|
123
|
-
cols[j] = {'basename': hex[i] + hex[j], 'type': 'empty'};
|
124
|
-
}
|
125
|
-
}
|
126
|
-
rows[i] = cols;
|
127
|
-
}
|
128
|
-
return rows;
|
129
|
-
}
|
130
|
-
|
131
|
-
$scope.findIndexEntry = function(sha1) {
|
132
|
-
var entries = $scope.object.entries;
|
133
|
-
var entry = null;
|
134
|
-
angular.forEach(entries, function(value) {
|
135
|
-
if (value.sha1 == sha1) {
|
136
|
-
entry = value;
|
137
|
-
return;
|
138
|
-
}
|
139
|
-
});
|
140
|
-
return entry;
|
141
|
-
};
|
142
|
-
|
143
|
-
$scope.indexEntryKeys = function(version) {
|
144
|
-
var keys = [
|
145
|
-
'ctime',
|
146
|
-
'cnano',
|
147
|
-
'mtime',
|
148
|
-
'mnano',
|
149
|
-
'dev',
|
150
|
-
'ino',
|
151
|
-
'object_type',
|
152
|
-
'unix_permission',
|
153
|
-
'uid',
|
154
|
-
'gid',
|
155
|
-
'size',
|
156
|
-
'sha1',
|
157
|
-
'assume_valid_flag',
|
158
|
-
'extended_flag',
|
159
|
-
'stage',
|
160
|
-
'name_length'
|
161
|
-
]
|
162
|
-
if (version > 2) {
|
163
|
-
keys = keys.concat([
|
164
|
-
'skip_worktree',
|
165
|
-
'intent_to_add',
|
166
|
-
]);
|
167
|
-
}
|
168
|
-
keys.push('path')
|
169
|
-
|
170
|
-
return keys;
|
171
|
-
};
|
172
|
-
|
173
|
-
$scope.resourceLoaded = function(json) {
|
174
|
-
$scope.workingdir = json.workingdir;
|
175
|
-
$scope.root = json.root;
|
176
|
-
if (json.path == "") {
|
177
|
-
$scope.path = ".git";
|
178
|
-
} else {
|
179
|
-
$scope.path = ".git/" + json.path;
|
180
|
-
}
|
181
|
-
$scope.object = json.object;
|
182
|
-
$scope.keys = $scope.indexEntryKeys($scope.object.version);
|
183
|
-
var template;
|
184
|
-
if (json.path == "objects") {
|
185
|
-
template = "objects";
|
186
|
-
$scope.objectTable = $scope.objectTable($scope.object.entries);
|
187
|
-
} else if (json.type == "index" && $routeParams.sha1) {
|
188
|
-
template = "index_entry";
|
189
|
-
$scope.entry = $scope.findIndexEntry($routeParams.sha1);
|
190
|
-
} else if (json.type == "packed_refs" && $routeParams.ref) {
|
191
|
-
template = json.type;
|
192
|
-
var entries = [];
|
193
|
-
angular.forEach($scope.object.entries, function(entry) {
|
194
|
-
if (entry.ref == $routeParams.ref) {
|
195
|
-
entries.push(entry);
|
196
|
-
$scope.limited = true;
|
197
|
-
}
|
198
|
-
});
|
199
|
-
$scope.object.entries = entries;
|
200
|
-
} else if (json.type == "packed_object") {
|
201
|
-
template = json.type;
|
202
|
-
$scope.unpacked = json.unpacked;
|
203
|
-
} else {
|
204
|
-
template = json.type;
|
205
|
-
}
|
206
|
-
|
207
|
-
$scope.template = 'templates/' + template + '.html';
|
208
|
-
};
|
209
|
-
|
210
|
-
$scope.resourceError = function(path) {
|
211
|
-
return function(response) {
|
212
|
-
if (response.status == 404) {
|
213
|
-
$scope.resourceNotFound(path);
|
214
|
-
} else {
|
215
|
-
$scope.template = 'templates/error.html';
|
216
|
-
}
|
217
|
-
};
|
218
|
-
};
|
219
|
-
|
220
|
-
$scope.resourceNotFound = function(path) {
|
221
|
-
$scope.path = path;
|
222
|
-
if (path.indexOf('refs/') == 0) {
|
223
|
-
$location.url('/.git/packed-refs?ref=' + path);
|
224
|
-
} else {
|
225
|
-
$scope.template = 'templates/notfound.html';
|
226
|
-
}
|
227
|
-
};
|
228
|
-
|
229
|
-
if (path.match(/^objects\/pack\/pack-[0-9a-f]{40}\.pack$/) && $routeParams.offset) {
|
230
|
-
PackedObjectResource.get({path: path, offset:$routeParams.offset}, $scope.resourceLoaded, $scope.resourceError(path));
|
231
|
-
} else {
|
232
|
-
GitResource.get({path: path}, $scope.resourceLoaded, $scope.resourceError(path));
|
233
|
-
}
|
234
|
-
|
235
|
-
}
|
236
|
-
|
237
|
-
function PackFileCtrl($scope, $location, $routeParams) {
|
238
|
-
$scope.indexUrl = $scope.path.replace(/.pack$/, '.idx');
|
239
|
-
}
|
240
|
-
|
241
|
-
function PackIndexCtrl($scope, $location, $routeParams) {
|
242
|
-
|
243
|
-
$scope.orderByOffset = function() {
|
244
|
-
$scope.object.entries = $scope.object.entries.sort(function(a, b) {
|
245
|
-
var x = a.offset - b.offset;
|
246
|
-
if (x == 0) {
|
247
|
-
return a.index - b.index;
|
248
|
-
}
|
249
|
-
return x;
|
250
|
-
});
|
251
|
-
return false;
|
252
|
-
}
|
253
|
-
|
254
|
-
$scope.orderByIndex = function() {
|
255
|
-
$scope.object.entries = $scope.object.entries.sort(function(a, b) {
|
256
|
-
return a.index - b.index;
|
257
|
-
})
|
258
|
-
return false;
|
259
|
-
}
|
260
|
-
|
261
|
-
$scope.packUrl = $scope.path.replace(/.idx$/, '.pack');
|
262
|
-
|
263
|
-
angular.forEach($scope.object.entries, function(entry, i) {
|
264
|
-
entry.index = i;
|
265
|
-
});
|
266
|
-
|
267
|
-
angular.forEach($scope.object.fanout, function(fanout, i) {
|
268
|
-
function toHex(num) {
|
269
|
-
var hex = num.toString(16);
|
270
|
-
return hex.length < 2 ? '0' + hex : hex;
|
271
|
-
}
|
272
|
-
|
273
|
-
if ($scope.object.entries[fanout]) {
|
274
|
-
var entry = $scope.object.entries[fanout];
|
275
|
-
if (! entry.fanoutMin) {
|
276
|
-
entry.fanoutMin = toHex(i);
|
277
|
-
} else {
|
278
|
-
entry.fanoutMax = toHex(i);
|
279
|
-
}
|
280
|
-
} else {
|
281
|
-
$scope.object.entries[fanout] = { fanoutMin: toHex(i) };
|
282
|
-
}
|
283
|
-
});
|
284
|
-
|
285
|
-
}
|
@@ -1,37 +0,0 @@
|
|
1
|
-
<article>
|
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" data-ng-controller="PackIndexCtrl">
|
5
|
-
<thead>
|
6
|
-
<tr>
|
7
|
-
<th><a href="" data-ng-click="orderByIndex()">#</a></th>
|
8
|
-
<th>fanout</th>
|
9
|
-
<th>sha1</th>
|
10
|
-
<th>crc32</th>
|
11
|
-
<th><a href="" data-ng-click="orderByOffset()">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.fanoutMax"><i class="icon-arrow-up"></i> {{entry.fanoutMin}} - {{entry.fanoutMax}}</span>
|
22
|
-
<span data-ng-show="entry.fanoutMin != null && ! entry.fanoutMax"><i class="icon-arrow-up"></i> {{entry.fanoutMin}}</span>
|
23
|
-
</td>
|
24
|
-
<td>{{entry.sha1}}</td>
|
25
|
-
<td>{{entry.crc32}}</td>
|
26
|
-
<td><a href="#/{{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="#/{{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
|
-
</article>
|
37
|
-
|