From f6a8cf5a4c0f573790cd5b23a38e69f26df90f3f Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 27 Feb 2014 09:14:27 -0500
Subject: [PATCH] Add subgit hook contributed by TMate Software
---
src/main/java/com/gitblit/manager/GitblitManager.java | 32 ++++++++++++++++++++++++++------
1 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/gitblit/manager/GitblitManager.java b/src/main/java/com/gitblit/manager/GitblitManager.java
index b391181..9d096dd 100644
--- a/src/main/java/com/gitblit/manager/GitblitManager.java
+++ b/src/main/java/com/gitblit/manager/GitblitManager.java
@@ -172,7 +172,8 @@
if (!ArrayUtils.isEmpty(repository.owners)) {
for (String owner : repository.owners) {
UserModel originOwner = userManager.getUserModel(owner);
- if (originOwner != null) {
+ if (originOwner != null && !originOwner.canClone(cloneModel)) {
+ // origin owner can't yet clone fork, grant explicit clone access
originOwner.setRepositoryPermission(cloneName, AccessPermission.CLONE);
reviseUser(originOwner.username, originOwner);
}
@@ -185,8 +186,8 @@
for (String name : users) {
if (!name.equalsIgnoreCase(user.username)) {
UserModel cloneUser = userManager.getUserModel(name);
- if (cloneUser.canClone(repository)) {
- // origin user can clone origin, grant clone access to fork
+ if (cloneUser.canClone(repository) && !cloneUser.canClone(cloneModel)) {
+ // origin user can't yet clone fork, grant explicit clone access
cloneUser.setRepositoryPermission(cloneName, AccessPermission.CLONE);
}
cloneUsers.add(cloneUser);
@@ -199,8 +200,8 @@
List<TeamModel> cloneTeams = new ArrayList<TeamModel>();
for (String name : teams) {
TeamModel cloneTeam = userManager.getTeamModel(name);
- if (cloneTeam.canClone(repository)) {
- // origin team can clone origin, grant clone access to fork
+ if (cloneTeam.canClone(repository) && !cloneTeam.canClone(cloneModel)) {
+ // origin team can't yet clone fork, grant explicit clone access
cloneTeam.setRepositoryPermission(cloneName, AccessPermission.CLONE);
}
cloneTeams.add(cloneTeam);
@@ -337,8 +338,12 @@
}
protected String getRepositoryUrl(HttpServletRequest request, String username, RepositoryModel repository) {
+ String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);
+ if (StringUtils.isEmpty(gitblitUrl)) {
+ gitblitUrl = HttpUtils.getGitblitURL(request);
+ }
StringBuilder sb = new StringBuilder();
- sb.append(HttpUtils.getGitblitURL(request));
+ sb.append(gitblitUrl);
sb.append(Constants.R_PATH);
sb.append(repository.name);
@@ -593,6 +598,16 @@
notificationManager.sendHtmlMail(subject, message, toAddresses);
}
+ @Override
+ public void sendHtmlMail(String from, String subject, String message, Collection<String> toAddresses) {
+ notificationManager.sendHtmlMail(from, subject, message, toAddresses);
+ }
+
+ @Override
+ public void sendHtmlMail(String from, String subject, String message, String... toAddresses) {
+ notificationManager.sendHtmlMail(from, subject, message, toAddresses);
+ }
+
/*
* SESSION MANAGER
*/
@@ -620,6 +635,11 @@
}
@Override
+ public String getCookie(HttpServletRequest request) {
+ return authenticationManager.getCookie(request);
+ }
+
+ @Override
public void setCookie(HttpServletResponse response, UserModel user) {
authenticationManager.setCookie(response, user);
}
--
Gitblit v1.9.1