git_wit 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +145 -8
- data/lib/git_wit/shell.rb +3 -3
- data/lib/git_wit/version.rb +1 -1
- data/test/dummy/log/development.log +236 -0
- data/test/dummy/log/test.log +53 -0
- metadata +11 -1
data/README.md
CHANGED
@@ -6,9 +6,21 @@ Dead simple Git hosting for Rails apps.
|
|
6
6
|
|
7
7
|
## Quickstart
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Create a Rails 3.2 app if you don't already have one. Add `git_wit` to your
|
10
|
+
Gemfile:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
# Use github for now - early development:
|
14
|
+
gem "git_wit", git: "https://github.com/xdissent/git_wit.git"
|
15
|
+
|
16
|
+
# Later it might be safe to use a rubygems release:
|
17
|
+
# gem "git_wit", "~> 0.1.0"
|
18
|
+
```
|
19
|
+
|
20
|
+
Run `bundle install` followed by `rails g git_wit:install` and then checkout
|
21
|
+
[`config/initializers/git_wit.rb`](https://github.com/xdissent/git_wit/blob/master/lib/generators/git_wit/templates/git_wit.rb).
|
22
|
+
You'll want to first change `config.repositories_path` to a folder where you'd
|
23
|
+
like to store your repositories. Let's use "tmp/repositories" in our app root
|
12
24
|
for fun:
|
13
25
|
|
14
26
|
```ruby
|
@@ -70,13 +82,138 @@ $ git push origin master
|
|
70
82
|
Your server will ask you for a username and password when you push - use
|
71
83
|
`writer` for both and it should accept your changes.
|
72
84
|
|
73
|
-
## SSH support
|
74
85
|
|
75
|
-
|
76
|
-
|
86
|
+
## Advanced Usage (Devise, Cancan, etc.)
|
87
|
+
|
88
|
+
See [`test/dummy`](https://github.com/xdissent/git_wit/tree/master/test/dummy)
|
89
|
+
for an example app that integrates
|
90
|
+
[Devise](https://github.com/plataformatec/devise),
|
91
|
+
[Cancan](https://github.com/ryanb/cancan), and
|
92
|
+
[twitter-bootstrap-rails](https://github.com/seyhunak/twitter-bootstrap-rails).
|
93
|
+
Example controllers for managing repositories and public keys are included.
|
94
|
+
|
95
|
+
|
96
|
+
## SSH support - AKA: The hard part
|
97
|
+
|
98
|
+
To enable git operations over SSH, you **must have a dedicated SSH user**. This
|
99
|
+
user will *only* be used for SSH autentication. Immediately after successfully
|
100
|
+
authenticating, the SSH user will `sudo` to the application user to continue
|
101
|
+
with the git operation. This eliminates the need for all the bat-shit crazy git
|
102
|
+
pulls/pushes and SSH wrappers and crap that are typical of gitolite/gitosis
|
103
|
+
setups. Your application user owns everything except the `authorized_keys` file
|
104
|
+
and the `ssh_user` only needs to know how to call the `gw-shell` command.
|
105
|
+
|
106
|
+
First, create a dedicated SSH user. On Mountain Lion:
|
107
|
+
|
108
|
+
```console
|
109
|
+
$ sudo dscl . -create /Groups/gitwit
|
110
|
+
$ sudo dscl . -create /Groups/gitwit PrimaryGroupID 333
|
111
|
+
$ sudo dscl . -create /Groups/gitwit RealName "GitWit Server"
|
112
|
+
$ sudo dscl . -create /Users/gitwit UniqueID 333
|
113
|
+
$ sudo dscl . -create /Users/gitwit PrimaryGroupID 333
|
114
|
+
$ sudo dscl . -create /Users/gitwit NFSHomeDirectory /var/gitwit
|
115
|
+
$ sudo dscl . -create /Users/gitwit UserShell /bin/bash
|
116
|
+
$ sudo dscl . -create /Users/gitwit RealName "GitWit Server"
|
117
|
+
$ sudo mkdir -p ~gitwit
|
118
|
+
$ sudo chown -R gitwit:gitwit ~gitwit
|
119
|
+
```
|
120
|
+
|
121
|
+
Enable the `ssh_user` config value in `config/initializers/git_wit.rb`:
|
122
|
+
|
123
|
+
```ruby
|
124
|
+
config.ssh_user = "gitwit"
|
125
|
+
```
|
126
|
+
|
127
|
+
Now your application user needs to be allowed to `sudo` as `ssh_user` and vice
|
128
|
+
versa. Edit `/etc/sudoers` using `sudo visudo` and add the following lines:
|
129
|
+
|
130
|
+
```
|
131
|
+
rails_user ALL=(gitwit) NOPASSWD:ALL
|
132
|
+
gitwit ALL=(rails_user) NOPASSWD:ALL
|
133
|
+
```
|
134
|
+
|
135
|
+
Replace `rails_user` with the application under which your Rails app runs, which
|
136
|
+
will be your personal username if using `rails s` or Pow.
|
137
|
+
|
138
|
+
Test your `sudo` rights and initialize the `ssh_user` environment:
|
139
|
+
|
140
|
+
```console
|
141
|
+
$ sudo -u gitwit -i
|
142
|
+
$ mkdir .ssh
|
143
|
+
$ chmod 700 .ssh
|
144
|
+
$ touch .ssh/authorized_keys
|
145
|
+
$ chmod 600 .ssh/authorized_keys
|
146
|
+
```
|
147
|
+
|
148
|
+
If you're using RVM or some other wacky environment manipulating tool, you're
|
149
|
+
going to want to adjust the login environment for `ssh_user` by creating a
|
150
|
+
`~ssh_user/.bashrc` file. For example, to load a specific RVM gemset:
|
151
|
+
|
152
|
+
```bash
|
153
|
+
source "/Users/xdissent/.rvm/environments/ruby-1.9.3-p385@git_wit"
|
154
|
+
```
|
155
|
+
|
156
|
+
You may also need to adjust the `PATH` to include the location of the `gw-shell`
|
157
|
+
executable. If you're using `bundle --binstubs` for example:
|
158
|
+
|
159
|
+
```bash
|
160
|
+
export PATH="/path/to/app/bin:$PATH"
|
161
|
+
```
|
162
|
+
|
163
|
+
The `gw-shell` command handles the authentication and authorization for the SSH
|
164
|
+
protocol. It is initially called by `ssh_user` upon login (git operation) and it
|
165
|
+
will attempt to `sudo` to the application user and re-run itself with the same
|
166
|
+
environment. It determines which user is the "application user" by looking at
|
167
|
+
who owns the rails app root folder. To determine where the app root is actually
|
168
|
+
located, it looks for the ENV variables `RAILS_ROOT` and `BUNDLE_GEMFILE` in
|
169
|
+
order. When in doubt, set `RAILS_ROOT` in `~ssh_user/.bashrc`:
|
170
|
+
|
171
|
+
```bash
|
172
|
+
export RAILS_ROOT="/path/to/app"
|
173
|
+
```
|
174
|
+
|
175
|
+
**Remember to add `export RAILS_ENV="production"` for production deployments!**
|
176
|
+
|
177
|
+
You can easily sanity check your environment using `sudo` as your app user:
|
178
|
+
|
179
|
+
```console
|
180
|
+
$ sudo -u gitwit -i
|
181
|
+
$ source .bashrc
|
182
|
+
$ which gw-shell
|
183
|
+
/Users/xdissent/Code/git_wit/stubs/gw-shell
|
184
|
+
$ echo $RAILS_ROOT
|
185
|
+
/Users/xdissent/Code/git_wit/test/dummy
|
186
|
+
```
|
187
|
+
|
188
|
+
Now all that's left to do is add some `authorized_keys` and you're all set.
|
189
|
+
This can be done from the rails console (`rails c`):
|
190
|
+
|
191
|
+
```ruby
|
192
|
+
GitWit.add_authorized_key "writer", "ssh-rsa long-ass-key-string writer@example.com"
|
193
|
+
# => nil
|
194
|
+
GitWit.authorized_keys_file.keys
|
195
|
+
# => [command="gw-shell writer",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa long-ass-key-string writer@example.com]
|
196
|
+
```
|
197
|
+
|
198
|
+
You may now clone/push/pull over SSH - assuming the key you installed for
|
199
|
+
`writer` is known to your ssh agent (ie `~/.ssh/id_rsa`):
|
200
|
+
|
201
|
+
```console
|
202
|
+
$ git clone gitwit@localhost:example.git
|
203
|
+
```
|
204
|
+
|
205
|
+
See the dummy app in
|
206
|
+
[`test/dummy`](https://github.com/xdissent/git_wit/tree/master/test/dummy) for
|
207
|
+
a more advanced example of `authorized_keys` management.
|
208
|
+
|
209
|
+
|
210
|
+
## Git hooks and configs and umasks and everything
|
77
211
|
|
78
|
-
|
79
|
-
|
212
|
+
Dude, your app owns the repos now. Hooks are just files again! Rediscover the
|
213
|
+
[grit](https://github.com/mojombo/grit) gem and go nuts with all kinds of fun
|
214
|
+
stuff that used to be a serious pain. Paranoid? Lock down the permissions on
|
215
|
+
your repositories folder so that only your application user can read it. The
|
216
|
+
SSH shell will still be executed as the application user so it's no sweat.
|
80
217
|
|
81
218
|
|
82
219
|
This project rocks and uses MIT-LICENSE.
|
data/lib/git_wit/shell.rb
CHANGED
@@ -22,8 +22,8 @@ module GitWit
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def self.rails_root
|
25
|
-
return File.expand_path(ENV["RAILS_ROOT"]) if ENV["RAILS_ROOT"]
|
26
|
-
return File.expand_path("..", ENV["BUNDLE_GEMFILE"]) if ENV["BUNDLE_GEMFILE"]
|
25
|
+
return File.expand_path(ENV["RAILS_ROOT"]) if ENV["RAILS_ROOT"]
|
26
|
+
return File.expand_path("..", ENV["BUNDLE_GEMFILE"]) if ENV["BUNDLE_GEMFILE"]
|
27
27
|
Dir.pwd
|
28
28
|
end
|
29
29
|
|
@@ -43,7 +43,7 @@ module GitWit
|
|
43
43
|
|
44
44
|
def self.authenticate!(username)
|
45
45
|
user = authenticate username
|
46
|
-
abort "Anonymous access denied"
|
46
|
+
abort "Anonymous access denied" if user.nil?
|
47
47
|
user
|
48
48
|
end
|
49
49
|
|
data/lib/git_wit/version.rb
CHANGED
@@ -0,0 +1,236 @@
|
|
1
|
+
Connecting to database specified by database.yml
|
2
|
+
|
3
|
+
|
4
|
+
Started GET "/" for 127.0.0.1 at 2013-02-18 02:12:23 -0600
|
5
|
+
Processing by RepositoriesController#index as HTML
|
6
|
+
[1m[36mRepository Load (0.2ms)[0m [1mSELECT "repositories".* FROM "repositories" WHERE "repositories"."public" = 't'[0m
|
7
|
+
[1m[35mUser Load (0.3ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
|
8
|
+
Rendered repositories/index.html.erb within layouts/application (45.8ms)
|
9
|
+
Completed 200 OK in 298ms (Views: 190.4ms | ActiveRecord: 3.7ms)
|
10
|
+
|
11
|
+
|
12
|
+
Started GET "/assets/twitter-bootstrap-static/bootstrap.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
13
|
+
Served asset /twitter-bootstrap-static/bootstrap.css - 200 OK (7ms)
|
14
|
+
|
15
|
+
|
16
|
+
Started GET "/assets/twitter-bootstrap-static/fontawesome.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
17
|
+
Served asset /twitter-bootstrap-static/fontawesome.css - 200 OK (4ms)
|
18
|
+
|
19
|
+
|
20
|
+
Started GET "/assets/repositories.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
21
|
+
Served asset /repositories.css - 200 OK (2ms)
|
22
|
+
|
23
|
+
|
24
|
+
Started GET "/assets/scaffold.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
25
|
+
Served asset /scaffold.css - 304 Not Modified (2ms)
|
26
|
+
|
27
|
+
|
28
|
+
Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
29
|
+
Served asset /jquery_ujs.js - 304 Not Modified (28ms)
|
30
|
+
|
31
|
+
|
32
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-transition.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
33
|
+
Served asset /twitter/bootstrap/bootstrap-transition.js - 304 Not Modified (4ms)
|
34
|
+
|
35
|
+
|
36
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-alert.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
37
|
+
Served asset /twitter/bootstrap/bootstrap-alert.js - 304 Not Modified (6ms)
|
38
|
+
|
39
|
+
|
40
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-dropdown.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
41
|
+
Served asset /twitter/bootstrap/bootstrap-dropdown.js - 304 Not Modified (4ms)
|
42
|
+
|
43
|
+
|
44
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-scrollspy.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
45
|
+
Served asset /twitter/bootstrap/bootstrap-scrollspy.js - 304 Not Modified (3ms)
|
46
|
+
|
47
|
+
|
48
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-tab.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
49
|
+
Served asset /twitter/bootstrap/bootstrap-tab.js - 304 Not Modified (52ms)
|
50
|
+
|
51
|
+
|
52
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-tooltip.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
53
|
+
Served asset /twitter/bootstrap/bootstrap-tooltip.js - 304 Not Modified (5ms)
|
54
|
+
|
55
|
+
|
56
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-popover.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
57
|
+
Served asset /twitter/bootstrap/bootstrap-popover.js - 304 Not Modified (3ms)
|
58
|
+
|
59
|
+
|
60
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-button.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
61
|
+
Served asset /twitter/bootstrap/bootstrap-button.js - 304 Not Modified (3ms)
|
62
|
+
|
63
|
+
|
64
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-collapse.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
65
|
+
Served asset /twitter/bootstrap/bootstrap-collapse.js - 304 Not Modified (3ms)
|
66
|
+
|
67
|
+
|
68
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-carousel.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
69
|
+
Served asset /twitter/bootstrap/bootstrap-carousel.js - 304 Not Modified (5ms)
|
70
|
+
|
71
|
+
|
72
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-typeahead.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
73
|
+
Served asset /twitter/bootstrap/bootstrap-typeahead.js - 304 Not Modified (3ms)
|
74
|
+
|
75
|
+
|
76
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-affix.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
77
|
+
Served asset /twitter/bootstrap/bootstrap-affix.js - 304 Not Modified (3ms)
|
78
|
+
|
79
|
+
|
80
|
+
Started GET "/assets/twitter/bootstrap.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
81
|
+
Served asset /twitter/bootstrap.js - 304 Not Modified (17ms)
|
82
|
+
|
83
|
+
|
84
|
+
Started GET "/assets/bootstrap.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
85
|
+
Served asset /bootstrap.js - 304 Not Modified (1ms)
|
86
|
+
|
87
|
+
|
88
|
+
Started GET "/assets/public_keys.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
89
|
+
Served asset /public_keys.js - 304 Not Modified (1ms)
|
90
|
+
|
91
|
+
|
92
|
+
Started GET "/assets/repositories.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
93
|
+
Served asset /repositories.js - 304 Not Modified (1ms)
|
94
|
+
|
95
|
+
|
96
|
+
Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
|
97
|
+
Served asset /application.js - 304 Not Modified (20ms)
|
98
|
+
Connecting to database specified by database.yml
|
99
|
+
|
100
|
+
|
101
|
+
Started GET "/assets/bootstrap_and_overrides.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
|
102
|
+
Served asset /bootstrap_and_overrides.css - 200 OK (5ms)
|
103
|
+
|
104
|
+
|
105
|
+
Started GET "/assets/public_keys.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
|
106
|
+
Served asset /public_keys.css - 200 OK (1ms)
|
107
|
+
|
108
|
+
|
109
|
+
Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
|
110
|
+
Served asset /application.css - 304 Not Modified (7ms)
|
111
|
+
|
112
|
+
|
113
|
+
Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
|
114
|
+
Served asset /jquery.js - 304 Not Modified (3ms)
|
115
|
+
|
116
|
+
|
117
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-modal.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
|
118
|
+
Served asset /twitter/bootstrap/bootstrap-modal.js - 304 Not Modified (3ms)
|
119
|
+
Connecting to database specified by database.yml
|
120
|
+
|
121
|
+
|
122
|
+
Started GET "/" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
123
|
+
Processing by RepositoriesController#index as HTML
|
124
|
+
[1m[36mRepository Load (0.7ms)[0m [1mSELECT "repositories".* FROM "repositories" WHERE "repositories"."public" = 't'[0m
|
125
|
+
[1m[35mUser Load (0.5ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
|
126
|
+
Rendered repositories/index.html.erb within layouts/application (55.8ms)
|
127
|
+
Completed 200 OK in 378ms (Views: 248.3ms | ActiveRecord: 5.2ms)
|
128
|
+
|
129
|
+
|
130
|
+
Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
131
|
+
Served asset /application.css - 304 Not Modified (15ms)
|
132
|
+
|
133
|
+
|
134
|
+
Started GET "/assets/twitter-bootstrap-static/bootstrap.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
135
|
+
Served asset /twitter-bootstrap-static/bootstrap.css - 200 OK (13ms)
|
136
|
+
|
137
|
+
|
138
|
+
Started GET "/assets/twitter-bootstrap-static/fontawesome.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
139
|
+
Served asset /twitter-bootstrap-static/fontawesome.css - 200 OK (39ms)
|
140
|
+
|
141
|
+
|
142
|
+
Started GET "/assets/scaffold.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
143
|
+
Served asset /scaffold.css - 304 Not Modified (2ms)
|
144
|
+
|
145
|
+
|
146
|
+
Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
147
|
+
Served asset /jquery_ujs.js - 304 Not Modified (2ms)
|
148
|
+
|
149
|
+
|
150
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-transition.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
151
|
+
Served asset /twitter/bootstrap/bootstrap-transition.js - 304 Not Modified (4ms)
|
152
|
+
|
153
|
+
|
154
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-modal.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
155
|
+
Served asset /twitter/bootstrap/bootstrap-modal.js - 304 Not Modified (3ms)
|
156
|
+
|
157
|
+
|
158
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-dropdown.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
159
|
+
Served asset /twitter/bootstrap/bootstrap-dropdown.js - 304 Not Modified (55ms)
|
160
|
+
|
161
|
+
|
162
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-scrollspy.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
163
|
+
Served asset /twitter/bootstrap/bootstrap-scrollspy.js - 304 Not Modified (4ms)
|
164
|
+
|
165
|
+
|
166
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-tab.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
167
|
+
Served asset /twitter/bootstrap/bootstrap-tab.js - 304 Not Modified (3ms)
|
168
|
+
|
169
|
+
|
170
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-tooltip.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
171
|
+
Served asset /twitter/bootstrap/bootstrap-tooltip.js - 304 Not Modified (3ms)
|
172
|
+
|
173
|
+
|
174
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-popover.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
175
|
+
Served asset /twitter/bootstrap/bootstrap-popover.js - 304 Not Modified (3ms)
|
176
|
+
|
177
|
+
|
178
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-button.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
|
179
|
+
Served asset /twitter/bootstrap/bootstrap-button.js - 304 Not Modified (4ms)
|
180
|
+
|
181
|
+
|
182
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-collapse.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
|
183
|
+
Served asset /twitter/bootstrap/bootstrap-collapse.js - 304 Not Modified (3ms)
|
184
|
+
|
185
|
+
|
186
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-carousel.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
|
187
|
+
Served asset /twitter/bootstrap/bootstrap-carousel.js - 304 Not Modified (3ms)
|
188
|
+
|
189
|
+
|
190
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-typeahead.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
|
191
|
+
Served asset /twitter/bootstrap/bootstrap-typeahead.js - 304 Not Modified (3ms)
|
192
|
+
|
193
|
+
|
194
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-affix.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
|
195
|
+
Served asset /twitter/bootstrap/bootstrap-affix.js - 304 Not Modified (3ms)
|
196
|
+
|
197
|
+
|
198
|
+
Started GET "/assets/twitter/bootstrap.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
|
199
|
+
Served asset /twitter/bootstrap.js - 304 Not Modified (14ms)
|
200
|
+
|
201
|
+
|
202
|
+
Started GET "/assets/bootstrap.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
|
203
|
+
Served asset /bootstrap.js - 304 Not Modified (1ms)
|
204
|
+
|
205
|
+
|
206
|
+
Started GET "/assets/public_keys.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
|
207
|
+
Served asset /public_keys.js - 304 Not Modified (1ms)
|
208
|
+
|
209
|
+
|
210
|
+
Started GET "/assets/repositories.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
|
211
|
+
Served asset /repositories.js - 304 Not Modified (1ms)
|
212
|
+
|
213
|
+
|
214
|
+
Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
|
215
|
+
Served asset /application.js - 304 Not Modified (20ms)
|
216
|
+
Connecting to database specified by database.yml
|
217
|
+
|
218
|
+
|
219
|
+
Started GET "/assets/public_keys.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
|
220
|
+
Served asset /public_keys.css - 200 OK (3ms)
|
221
|
+
|
222
|
+
|
223
|
+
Started GET "/assets/bootstrap_and_overrides.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
|
224
|
+
Served asset /bootstrap_and_overrides.css - 200 OK (7ms)
|
225
|
+
|
226
|
+
|
227
|
+
Started GET "/assets/repositories.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
|
228
|
+
Served asset /repositories.css - 200 OK (3ms)
|
229
|
+
|
230
|
+
|
231
|
+
Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
|
232
|
+
Served asset /jquery.js - 304 Not Modified (10ms)
|
233
|
+
|
234
|
+
|
235
|
+
Started GET "/assets/twitter/bootstrap/bootstrap-alert.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
|
236
|
+
Served asset /twitter/bootstrap/bootstrap-alert.js - 304 Not Modified (26ms)
|
@@ -0,0 +1,53 @@
|
|
1
|
+
Connecting to database specified by database.yml
|
2
|
+
[1m[36m (0.6ms)[0m [1mbegin transaction[0m
|
3
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
4
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
5
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
6
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
7
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
8
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
9
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
10
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
11
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
12
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
13
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
14
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
15
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
16
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
17
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
18
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
19
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
20
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
21
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
22
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
23
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
24
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
25
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
26
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
27
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
28
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
29
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
30
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
31
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
32
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
33
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
34
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
35
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
36
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
37
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
38
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
39
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
40
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
41
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
42
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
43
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
44
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
45
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
46
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
47
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
48
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
49
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
50
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
51
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
52
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
53
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_wit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -139,6 +139,8 @@ files:
|
|
139
139
|
- test/dummy/db/migrate/20130217221157_create_public_keys.rb
|
140
140
|
- test/dummy/db/schema.rb
|
141
141
|
- test/dummy/db/test.sqlite3
|
142
|
+
- test/dummy/log/development.log
|
143
|
+
- test/dummy/log/test.log
|
142
144
|
- test/dummy/public/404.html
|
143
145
|
- test/dummy/public/422.html
|
144
146
|
- test/dummy/public/500.html
|
@@ -238,12 +240,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
238
240
|
- - ! '>='
|
239
241
|
- !ruby/object:Gem::Version
|
240
242
|
version: '0'
|
243
|
+
segments:
|
244
|
+
- 0
|
245
|
+
hash: -1704736703084215079
|
241
246
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
242
247
|
none: false
|
243
248
|
requirements:
|
244
249
|
- - ! '>='
|
245
250
|
- !ruby/object:Gem::Version
|
246
251
|
version: '0'
|
252
|
+
segments:
|
253
|
+
- 0
|
254
|
+
hash: -1704736703084215079
|
247
255
|
requirements: []
|
248
256
|
rubyforge_project:
|
249
257
|
rubygems_version: 1.8.25
|
@@ -321,6 +329,8 @@ test_files:
|
|
321
329
|
- test/dummy/db/migrate/20130217221157_create_public_keys.rb
|
322
330
|
- test/dummy/db/schema.rb
|
323
331
|
- test/dummy/db/test.sqlite3
|
332
|
+
- test/dummy/log/development.log
|
333
|
+
- test/dummy/log/test.log
|
324
334
|
- test/dummy/public/404.html
|
325
335
|
- test/dummy/public/422.html
|
326
336
|
- test/dummy/public/500.html
|