git_wit 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|