+<%# This can be used to display basic git setup instructions, like on github... %>
+<% html_title(l(:label_repository)) -%>
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
new file mode 100644
index 000000000..d39aa3289
--- /dev/null
+++ b/config/locales/bg.yml
@@ -0,0 +1,13 @@
+'bg':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/bs.yml b/config/locales/bs.yml
new file mode 100644
index 000000000..38b90e9fd
--- /dev/null
+++ b/config/locales/bs.yml
@@ -0,0 +1,13 @@
+'bs':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
new file mode 100644
index 000000000..f5f51221f
--- /dev/null
+++ b/config/locales/ca.yml
@@ -0,0 +1,13 @@
+'ca':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
new file mode 100644
index 000000000..6aaf673e3
--- /dev/null
+++ b/config/locales/cs.yml
@@ -0,0 +1,13 @@
+'cs':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/da.yml b/config/locales/da.yml
new file mode 100644
index 000000000..3b04263df
--- /dev/null
+++ b/config/locales/da.yml
@@ -0,0 +1,13 @@
+'da':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/de.yml b/config/locales/de.yml
new file mode 100644
index 000000000..aa25bbbe9
--- /dev/null
+++ b/config/locales/de.yml
@@ -0,0 +1,15 @@
+'de':
+ label_public_keys: Öffentliche Schlüssel
+ label_public_key_new: Neuer öffentlicher Schlüssel
+ field_key: Schlüssel
+ notice_public_key_updated: Öffentlicher Schlüssel wurde erfolgreich aktualisiert.
+ notice_public_key_added: Öffentlicher Schlüssel wurde erfolgreich hinzugefügt.
+
+ label_key_cannot_be_changed_please_create_new_key: 'Der Schlüssel kann nicht mehr verändert werden. Sie können jedoch diesen Schlüssel deaktivieren und einen neuen anlegen.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': "darf nicht verändert werden"
+
+
diff --git a/config/locales/el.yml b/config/locales/el.yml
new file mode 100644
index 000000000..fa15dd641
--- /dev/null
+++ b/config/locales/el.yml
@@ -0,0 +1,13 @@
+'el':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/en.yml b/config/locales/en.yml
new file mode 100644
index 000000000..0258072b1
--- /dev/null
+++ b/config/locales/en.yml
@@ -0,0 +1,13 @@
+en:
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/es.yml b/config/locales/es.yml
new file mode 100644
index 000000000..4a95d0151
--- /dev/null
+++ b/config/locales/es.yml
@@ -0,0 +1,13 @@
+'es':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
new file mode 100644
index 000000000..dacb7cf9b
--- /dev/null
+++ b/config/locales/fi.yml
@@ -0,0 +1,13 @@
+'fi':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
new file mode 100644
index 000000000..3523f1a27
--- /dev/null
+++ b/config/locales/fr.yml
@@ -0,0 +1,13 @@
+'fr':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
new file mode 100644
index 000000000..e6e8047b0
--- /dev/null
+++ b/config/locales/gl.yml
@@ -0,0 +1,13 @@
+'gl':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/he.yml b/config/locales/he.yml
new file mode 100644
index 000000000..9d62b5eb4
--- /dev/null
+++ b/config/locales/he.yml
@@ -0,0 +1,13 @@
+'he':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
new file mode 100644
index 000000000..9b5598262
--- /dev/null
+++ b/config/locales/hu.yml
@@ -0,0 +1,13 @@
+'hu':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/id.yml b/config/locales/id.yml
new file mode 100644
index 000000000..910ca351d
--- /dev/null
+++ b/config/locales/id.yml
@@ -0,0 +1,13 @@
+'id':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/it.yml b/config/locales/it.yml
new file mode 100644
index 000000000..dab4cd452
--- /dev/null
+++ b/config/locales/it.yml
@@ -0,0 +1,13 @@
+'it':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
new file mode 100644
index 000000000..ac3fddba0
--- /dev/null
+++ b/config/locales/ja.yml
@@ -0,0 +1,13 @@
+'ja':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
new file mode 100644
index 000000000..54bb18ead
--- /dev/null
+++ b/config/locales/ko.yml
@@ -0,0 +1,13 @@
+'ko':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
new file mode 100644
index 000000000..a9a0fd7cf
--- /dev/null
+++ b/config/locales/lt.yml
@@ -0,0 +1,13 @@
+'lt':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
new file mode 100644
index 000000000..237aee533
--- /dev/null
+++ b/config/locales/nl.yml
@@ -0,0 +1,13 @@
+'nl':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/no.yml b/config/locales/no.yml
new file mode 100644
index 000000000..0a0699ba8
--- /dev/null
+++ b/config/locales/no.yml
@@ -0,0 +1,13 @@
+'no':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
new file mode 100644
index 000000000..5efe68dd5
--- /dev/null
+++ b/config/locales/pl.yml
@@ -0,0 +1,13 @@
+'pl':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
new file mode 100644
index 000000000..ae2538d44
--- /dev/null
+++ b/config/locales/pt-BR.yml
@@ -0,0 +1,13 @@
+'pt-BR':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
new file mode 100644
index 000000000..2afda7e9d
--- /dev/null
+++ b/config/locales/pt.yml
@@ -0,0 +1,13 @@
+'pt':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
new file mode 100644
index 000000000..c9ef90e5d
--- /dev/null
+++ b/config/locales/ro.yml
@@ -0,0 +1,13 @@
+'ro':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
new file mode 100644
index 000000000..5d5bd7640
--- /dev/null
+++ b/config/locales/ru.yml
@@ -0,0 +1,13 @@
+'ru':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
new file mode 100644
index 000000000..b3c5db0dc
--- /dev/null
+++ b/config/locales/sk.yml
@@ -0,0 +1,13 @@
+'sk':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
new file mode 100644
index 000000000..b8de0fda0
--- /dev/null
+++ b/config/locales/sl.yml
@@ -0,0 +1,13 @@
+'sl':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
new file mode 100644
index 000000000..cef938053
--- /dev/null
+++ b/config/locales/sr.yml
@@ -0,0 +1,13 @@
+'sr':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
new file mode 100644
index 000000000..fd8fd64c9
--- /dev/null
+++ b/config/locales/sv.yml
@@ -0,0 +1,13 @@
+'sv':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/th.yml b/config/locales/th.yml
new file mode 100644
index 000000000..5be9fcc16
--- /dev/null
+++ b/config/locales/th.yml
@@ -0,0 +1,13 @@
+'th':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
new file mode 100644
index 000000000..d2198a0ab
--- /dev/null
+++ b/config/locales/tr.yml
@@ -0,0 +1,13 @@
+'tr':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
new file mode 100644
index 000000000..a8a6d33ad
--- /dev/null
+++ b/config/locales/uk.yml
@@ -0,0 +1,13 @@
+'uk':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
new file mode 100644
index 000000000..ccf959028
--- /dev/null
+++ b/config/locales/vi.yml
@@ -0,0 +1,13 @@
+'vi':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
new file mode 100644
index 000000000..501af2be8
--- /dev/null
+++ b/config/locales/zh-TW.yml
@@ -0,0 +1,13 @@
+'zh-TW':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
new file mode 100644
index 000000000..448bd506c
--- /dev/null
+++ b/config/locales/zh.yml
@@ -0,0 +1,13 @@
+'zh':
+ label_public_keys: Public keys
+ label_public_key_new: New public key
+ field_key: Key
+ notice_public_key_updated: Public key was successfully updated.
+ notice_public_key_added: Public key was successfully added.
+
+ label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
+
+ activerecord:
+ errors:
+ messages:
+ 'may not be changed': 'may not be changed'
diff --git a/config/routes.rb b/config/routes.rb
new file mode 100644
index 000000000..cf699f11b
--- /dev/null
+++ b/config/routes.rb
@@ -0,0 +1,3 @@
+ActionController::Routing::Routes.draw do |map|
+ map.resources :public_keys, :controller => 'gitosis_public_keys', :path_prefix => 'my'
+end
\ No newline at end of file
diff --git a/db/migrate/20091119162427_create_gitosis_public_keys.rb b/db/migrate/20091119162427_create_gitosis_public_keys.rb
new file mode 100644
index 000000000..b8f345634
--- /dev/null
+++ b/db/migrate/20091119162427_create_gitosis_public_keys.rb
@@ -0,0 +1,17 @@
+class CreateGitosisPublicKeys < ActiveRecord::Migration
+ def self.up
+ create_table :gitosis_public_keys do |t|
+ t.column :title, :string
+ t.column :identifier, :string
+ t.column :key, :text
+ t.column :active, :boolean, :default => true
+ t.references :user
+ t.timestamps
+
+ end
+ end
+
+ def self.down
+ drop_table :gitosis_public_keys
+ end
+end
diff --git a/extra/ssh/private_key b/extra/ssh/private_key
new file mode 100644
index 000000000..2e301a575
--- /dev/null
+++ b/extra/ssh/private_key
@@ -0,0 +1 @@
+# PLACE YOUR SSH PRIVATE KEY FOR GITOSIS CONFIGURATION HERE
\ No newline at end of file
diff --git a/extra/ssh_with_identity_file.sh b/extra/ssh_with_identity_file.sh
new file mode 100755
index 000000000..590346b8e
--- /dev/null
+++ b/extra/ssh_with_identity_file.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+exec ssh -i `dirname $0`/ssh/private_key "$@"
\ No newline at end of file
diff --git a/init.rb b/init.rb
new file mode 100644
index 000000000..d030ccff2
--- /dev/null
+++ b/init.rb
@@ -0,0 +1,24 @@
+require 'redmine'
+require 'user'
+
+require_dependency 'gitosis'
+require_dependency 'gitosis/patches/repositories_controller_patch'
+require_dependency 'gitosis/patches/repositories_helper_patch'
+
+Redmine::Plugin.register :redmine_gitosis do
+ name 'Redmine Gitosis plugin'
+ author 'Jan Schulz-Hofen'
+ description 'Enables Redmine to update a gitosis server.'
+ version '0.0.1'
+end
+
+# initialize hook
+class GitosisPublicKeyHook < Redmine::Hook::ViewListener
+ render_on :view_my_account_contextual, :inline => "| <%= link_to(l(:label_public_keys), public_keys_path) %>"
+end
+
+# initialize association from user -> public keys
+User.send(:has_many, :gitosis_public_keys, :dependent => :destroy)
+
+# initialize observer
+ActiveRecord::Base.observers = ActiveRecord::Base.observers << GitosisObserver
diff --git a/lib/gitosis.rb b/lib/gitosis.rb
new file mode 100644
index 000000000..3d311d654
--- /dev/null
+++ b/lib/gitosis.rb
@@ -0,0 +1,79 @@
+require 'lockfile'
+require 'inifile'
+require 'net/ssh'
+
+module Gitosis
+ # server config
+ GITOSIS_URI = 'git@plan.io:/gitosis-admin.git'
+ GITOSIS_BASE_PATH = '/opt/gitosis/repositories/'
+
+ # commands
+ ENV['GIT_SSH'] = SSH_WITH_IDENTITY_FILE = File.join(RAILS_ROOT, 'vendor/plugins/redmine_gitosis/extra/ssh_with_identity_file.sh')
+
+ def self.destroy_repository(project)
+ path = File.join(GITOSIS_BASE_PATH, "#{project.identifier}.git")
+ `rm -Rf #{path}`
+ end
+
+ def self.update_repositories(projects)
+ projects = (projects.is_a?(Array) ? projects : [projects])
+
+ Lockfile(File.join(Dir.tmpdir,'gitosis_lock'), :retries => 2, :sleep_inc=> 10) do
+
+ # HANDLE GIT
+
+ # create tmp dir
+ local_dir = File.join(Dir.tmpdir,"redmine-gitosis-#{Time.now.to_i}")
+
+ Dir.mkdir local_dir
+
+ # clone repo
+ `git clone #{GITOSIS_URI} #{local_dir}/gitosis`
+
+ changed = false
+
+ projects.select{|p| p.repository.is_a?(Repository::Git)}.each do |project|
+ # fetch users
+ users = project.member_principals.map(&:user).compact.uniq
+ write_users = users.select{ |user| user.allowed_to?( :commit_access, project ) }
+ read_users = users.select{ |user| user.allowed_to?( :view_changesets, project ) }
+
+ # write key files
+ users.map{|u| u.gitosis_public_keys.active}.flatten.compact.uniq.each do |key|
+ File.open(File.join(local_dir, 'gitosis/keydir',"#{key.identifier}.pub"), 'w') {|f| f.write(key.key.gsub(/\n/,'')) }
+ end
+
+ # delete inactives
+ users.map{|u| u.gitosis_public_keys.inactive}.flatten.compact.uniq.each do |key|
+ File.unlink(File.join(local_dir, 'gitosis/keydir',"#{key.identifier}.pub")) rescue nil
+ end
+
+ # write config file
+ conf = IniFile.new(File.join(local_dir,'gitosis','gitosis.conf'))
+ original = conf.clone
+ name = "#{project.identifier}"
+
+ conf["group #{name}"]['writable'] = name
+ conf["group #{name}"]['members'] = write_users.map{|u| u.gitosis_public_keys.active}.flatten.map{ |key| "#{key.identifier}" }.join(' ')
+ unless conf.eql?(original)
+ conf.write
+ changed = true
+ end
+ end
+
+ if changed
+ # add, commit, push, and remove local tmp dir
+ `cd #{File.join(local_dir,'gitosis')} ; git add keydir/* gitosis.conf`
+ `cd #{File.join(local_dir,'gitosis')} ; git commit -a -m 'updated by Redmine Gitosis'`
+ `cd #{File.join(local_dir,'gitosis')} ; git push`
+ end
+
+ # remove local copy
+ `rm -Rf #{local_dir}`
+
+ end
+
+
+ end
+
+end
diff --git a/lib/gitosis/patches/repositories_controller_patch.rb b/lib/gitosis/patches/repositories_controller_patch.rb
new file mode 100644
index 000000000..f181b5c84
--- /dev/null
+++ b/lib/gitosis/patches/repositories_controller_patch.rb
@@ -0,0 +1,31 @@
+require_dependency 'repositories_controller'
+module Gitosis
+ module Patches
+ module RepositoriesControllerPatch
+
+ def show_with_git_instructions
+ if @repository.is_a?(Repository::Git) and @repository.entries(@path, @rev).blank?
+ render :action => 'git_instructions'
+ else
+ show_without_git_instructions
+ end
+ end
+
+ def edit_with_scm_settings
+ params[:repository] ||= {}
+ params[:repository][:url] = File.join(Gitosis::GITOSIS_BASE_PATH,"#{@project.identifier}.git") if params[:repository_scm] == 'Git'
+ edit_without_scm_settings
+ end
+
+ def self.included(base)
+ base.class_eval do
+ unloadable
+ end
+ base.send(:alias_method_chain, :show, :git_instructions)
+ base.send(:alias_method_chain, :edit, :scm_settings)
+ end
+
+ end
+ end
+end
+RepositoriesController.send(:include, Gitosis::Patches::RepositoriesControllerPatch) unless RepositoriesController.include?(Gitosis::Patches::RepositoriesControllerPatch)
diff --git a/lib/gitosis/patches/repositories_helper_patch.rb b/lib/gitosis/patches/repositories_helper_patch.rb
new file mode 100644
index 000000000..8c7dd89a3
--- /dev/null
+++ b/lib/gitosis/patches/repositories_helper_patch.rb
@@ -0,0 +1,17 @@
+require_dependency 'repositories_helper'
+module Gitosis
+ module Patches
+ module RepositoriesHelperPatch
+ def git_field_tags_with_disabled_configuration(form, repository) ; '' ; end
+
+ def self.included(base)
+ base.class_eval do
+ unloadable
+ end
+ base.send(:alias_method_chain, :git_field_tags, :disabled_configuration)
+ end
+
+ end
+ end
+end
+RepositoriesHelper.send(:include, Gitosis::Patches::RepositoriesHelperPatch) unless RepositoriesHelper.include?(Gitosis::Patches::RepositoriesHelperPatch)
\ No newline at end of file
diff --git a/test/fixtures/gitosis_public_keys.yml b/test/fixtures/gitosis_public_keys.yml
new file mode 100644
index 000000000..ca9e62f2d
--- /dev/null
+++ b/test/fixtures/gitosis_public_keys.yml
@@ -0,0 +1,9 @@
+# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
+one:
+ id: 1
+ title: MyString
+ key: MyText
+two:
+ id: 2
+ title: MyString
+ key: MyText
diff --git a/test/test_helper.rb b/test/test_helper.rb
new file mode 100644
index 000000000..bd1ed0c5d
--- /dev/null
+++ b/test/test_helper.rb
@@ -0,0 +1,5 @@
+# Load the normal Rails helper
+require File.expand_path(File.dirname(__FILE__) + '/../../../../test/test_helper')
+
+# Ensure that we are using the temporary fixture path
+Engines::Testing.set_fixture_path
diff --git a/test/unit/gitosis_public_key_test.rb b/test/unit/gitosis_public_key_test.rb
new file mode 100644
index 000000000..8b3e6bf00
--- /dev/null
+++ b/test/unit/gitosis_public_key_test.rb
@@ -0,0 +1,10 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class GitosisPublicKeyTest < ActiveSupport::TestCase
+ fixtures :gitosis_public_keys
+
+ # Replace this with your real tests.
+ def test_truth
+ assert true
+ end
+end