From 35f55ae7e034275811fa68908215b48bbf9df965 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 17 Sep 2013 17:05:00 -0400
Subject: [PATCH] Merge branch 'init-shared' of https://github.com/fzs/gitblit into prefixes
---
src/main/java/com/gitblit/GitBlit.java | 30 +++++++++++++++++++++---------
1 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java
index 6ea348d..1afbbc9 100644
--- a/src/main/java/com/gitblit/GitBlit.java
+++ b/src/main/java/com/gitblit/GitBlit.java
@@ -125,6 +125,7 @@
import com.gitblit.utils.JGitUtils.LastChange;
import com.gitblit.utils.JsonUtils;
import com.gitblit.utils.MetricUtils;
+import com.gitblit.utils.ModelUtils;
import com.gitblit.utils.ObjectCache;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils;
@@ -1243,8 +1244,8 @@
// personal repository
model.addOwner(user.username);
String oldRepositoryName = model.name;
- model.name = "~" + user.username + model.name.substring(model.projectPath.length());
- model.projectPath = "~" + user.username;
+ model.name = user.getPersonalPath() + model.name.substring(model.projectPath.length());
+ model.projectPath = user.getPersonalPath();
updateRepositoryModel(oldRepositoryName, model, false);
} else if (model.isOwner(username)) {
// common/shared repo
@@ -1853,8 +1854,8 @@
ProjectModel project = configs.get(name.toLowerCase());
if (project == null) {
project = new ProjectModel(name);
- if (name.length() > 0 && name.charAt(0) == '~') {
- UserModel user = getUserModel(name.substring(1));
+ if (ModelUtils.isPersonalRepository(name)) {
+ UserModel user = getUserModel(ModelUtils.getUserNameFromRepoPath(name));
if (user != null) {
project.title = user.getDisplayName();
project.description = "personal repositories";
@@ -2126,7 +2127,7 @@
* @return the name of the user's fork, null otherwise
*/
public String getFork(String username, String origin) {
- String userProject = "~" + username.toLowerCase();
+ String userProject = ModelUtils.getPersonalPath(username);
if (settings.getBoolean(Keys.git.cacheRepositoryList, true)) {
String userPath = userProject + "/";
@@ -2426,7 +2427,8 @@
}
// create repository
logger.info("create repository " + repository.name);
- r = JGitUtils.createRepository(repositoriesFolder, repository.name);
+ String shared = getString(Keys.git.createRepositoriesShared, "FALSE");
+ r = JGitUtils.createRepository(repositoriesFolder, repository.name, shared);
} else {
// rename repository
if (!repositoryName.equalsIgnoreCase(repository.name)) {
@@ -2528,7 +2530,13 @@
// close the repository object
r.close();
}
-
+
+ // Adjust permissions in case we updated the config files
+ JGitUtils.adjustSharedPerm(new File(r.getDirectory().getAbsolutePath(), "config"),
+ getString(Keys.git.createRepositoriesShared, "FALSE"));
+ JGitUtils.adjustSharedPerm(new File(r.getDirectory().getAbsolutePath(), "HEAD"),
+ getString(Keys.git.createRepositoriesShared, "FALSE"));
+
// update repository cache
removeFromCachedRepositoryList(repositoryName);
// model will actually be replaced on next load because config is stale
@@ -3439,6 +3447,10 @@
luceneExecutor = new LuceneExecutor(settings, repositoriesFolder);
gcExecutor = new GCExecutor(settings);
+ // initialize utilities
+ String prefix = settings.getString(Keys.git.userRepositoryPrefix, "~");
+ ModelUtils.setUserRepoPrefix(prefix);
+
// calculate repository list settings checksum for future config changes
repositoryListSettingsChecksum.set(getRepositoryListSettingsChecksum());
@@ -3603,7 +3615,7 @@
Date cutoff = CommitCache.instance().getCutoffDate();
for (String repositoryName : getRepositoryList()) {
RepositoryModel model = getRepositoryModel(repositoryName);
- if (model.hasCommits && model.lastChange.after(cutoff)) {
+ if (model != null && model.hasCommits && model.lastChange.after(cutoff)) {
repoCount++;
Repository repository = getRepository(repositoryName);
for (RefModel ref : JGitUtils.getLocalBranches(repository, true, -1)) {
@@ -3818,7 +3830,7 @@
* @throws GitBlitException
*/
public RepositoryModel fork(RepositoryModel repository, UserModel user) throws GitBlitException {
- String cloneName = MessageFormat.format("~{0}/{1}.git", user.username, StringUtils.stripDotGit(StringUtils.getLastPathElement(repository.name)));
+ String cloneName = MessageFormat.format("{0}/{1}.git", user.getPersonalPath(), StringUtils.stripDotGit(StringUtils.getLastPathElement(repository.name)));
String fromUrl = MessageFormat.format("file://{0}/{1}", repositoriesFolder.getAbsolutePath(), repository.name);
// clone the repository
--
Gitblit v1.9.1