showReadme = false\r
\r
#### Repository Names\r
-Repository names must be unique and are case-insensitive. The name must be composed of letters, digits, or `/ _ - .`<br/>\r
+Repository names must be unique and are CASE-SENSITIVE ON CASE-SENSITIVE FILESYSTEMS. The name must be composed of letters, digits, or `/ _ - .`<br/>\r
Whitespace is illegal.\r
\r
+Repositories can be grouped by folders. e.g. *libraries/mycoollib.git* and *libraries/myotherlib.git*\r
+\r
+Repository names will automatically have *.git* appended to the name at creation time, if not already specified. \r
+\r
#### Repository Owner\r
The *Repository Owner* has the special permission of being able to edit a repository through the web UI. The Repository Owner is not permitted to rename the repository, delete the repository, or reassign ownership to another user.\r
\r
boolean isCreate) throws GitBlitException {\r
Repository r = null;\r
if (isCreate) {\r
+ // ensure created repository name ends with .git\r
+ if (!repository.name.endsWith(org.eclipse.jgit.lib.Constants.DOT_GIT_EXT)) {\r
+ repository.name += org.eclipse.jgit.lib.Constants.DOT_GIT_EXT;\r
+ }\r
if (new File(repositoriesFolder, repository.name).exists()) {\r
throw new GitBlitException(MessageFormat.format(\r
"Can not create repository ''{0}'' because it already exists.",\r
gb.isFrozenDescription = deny push operations\r
gb.zip = zip\r
gb.showReadme = show readme\r
-gb.showReadmeDescription = show a \"readme\" markdown file on the summary page
\ No newline at end of file
+gb.showReadmeDescription = show a \"readme\" markdown file on the summary page\r
+gb.nameDescription = use '/' to group repositories. e.g. libraries/mycoollib.git\r
+gb.ownerDescription = the owner may edit repository settings
\ No newline at end of file
<form wicket:id="editForm">\r
<table class="plain">\r
<tbody>\r
- <tr><th><wicket:message key="gb.name"></wicket:message></th><td class="edit"><input type="text" wicket:id="name" id="name" size="40" tabindex="1" /></td></tr>\r
+ <tr><th><wicket:message key="gb.name"></wicket:message></th><td class="edit"><input type="text" wicket:id="name" id="name" size="40" tabindex="1" /> <i><wicket:message key="gb.nameDescription"></wicket:message></i></td></tr>\r
<tr><th><wicket:message key="gb.description"></wicket:message></th><td class="edit"><input type="text" wicket:id="description" size="40" tabindex="2" /></td></tr>\r
- <tr><th><wicket:message key="gb.owner"></wicket:message></th><td class="edit"><select wicket:id="owner" tabindex="3" /></td></tr>\r
+ <tr><th><wicket:message key="gb.owner"></wicket:message></th><td class="edit"><select wicket:id="owner" tabindex="3" /> <i><wicket:message key="gb.ownerDescription"></wicket:message></i></td></tr>\r
<tr><th><wicket:message key="gb.enableTickets"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useTickets" tabindex="4" /> <i><wicket:message key="gb.useTicketsDescription"></wicket:message></i></td></tr>\r
<tr><th><wicket:message key="gb.enableDocs"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useDocs" tabindex="5" /> <i><wicket:message key="gb.useDocsDescription"></wicket:message></i></td></tr>\r
<tr><th><wicket:message key="gb.showRemoteBranches"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="showRemoteBranches" tabindex="6" /> <i><wicket:message key="gb.showRemoteBranchesDescription"></wicket:message></i></td></tr>\r