Skip to content

Commit 30bb601

Browse files
Add support for forcing a fetch whether or not the treeish could be resolved
1 parent 2f0cc0b commit 30bb601

File tree

8 files changed

+183
-73
lines changed

8 files changed

+183
-73
lines changed

build.gradle

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,17 @@ repositories {
66
jcenter()
77
}
88

9-
ext.deps = [jsch: '0.0.9']
10-
119
defaultTasks 'build'
1210

1311
dependencies {
1412
compile gradleApi()
1513
compile localGroovy()
1614

17-
compile 'org.eclipse.jgit:org.eclipse.jgit:3.7.0.201502260915-r'
15+
compile 'org.eclipse.jgit:org.eclipse.jgit:4.4.1.201607150455-r'
1816

19-
compile "com.jcraft:jsch.agentproxy.jsch:${deps.jsch}"
20-
compile "com.jcraft:jsch.agentproxy.connector-factory:${deps.jsch}"
17+
compile "com.jcraft:jsch:0.1.53"
18+
compile 'com.jcraft:jsch.agentproxy.connector-factory:0.0.9'
19+
compile 'com.jcraft:jsch.agentproxy.jsch:0.0.9'
2120

2221
testCompile 'junit:junit:4.12'
2322
}
@@ -91,8 +90,4 @@ uploadArchives {
9190
}
9291
}
9392
}
94-
}
95-
96-
task wrapper(type: Wrapper) {
97-
gradleVersion = '2.11'
98-
}
93+
}

gradle/wrapper/gradle-wrapper.jar

-820 Bytes
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Tue Feb 16 07:32:36 PST 2016
1+
#Sat Aug 27 07:21:08 PDT 2016
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.11-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-3.0-all.zip

gradlew

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,30 @@
66
##
77
##############################################################################
88

9-
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10-
DEFAULT_JVM_OPTS=""
9+
# Attempt to set APP_HOME
10+
# Resolve links: $0 may be a link
11+
PRG="$0"
12+
# Need this for relative symlinks.
13+
while [ -h "$PRG" ] ; do
14+
ls=`ls -ld "$PRG"`
15+
link=`expr "$ls" : '.*-> \(.*\)$'`
16+
if expr "$link" : '/.*' > /dev/null; then
17+
PRG="$link"
18+
else
19+
PRG=`dirname "$PRG"`"/$link"
20+
fi
21+
done
22+
SAVED="`pwd`"
23+
cd "`dirname \"$PRG\"`/" >/dev/null
24+
APP_HOME="`pwd -P`"
25+
cd "$SAVED" >/dev/null
1126

1227
APP_NAME="Gradle"
1328
APP_BASE_NAME=`basename "$0"`
1429

30+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31+
DEFAULT_JVM_OPTS=""
32+
1533
# Use the maximum available, or set MAX_FD != -1 to use that value.
1634
MAX_FD="maximum"
1735

@@ -30,6 +48,7 @@ die ( ) {
3048
cygwin=false
3149
msys=false
3250
darwin=false
51+
nonstop=false
3352
case "`uname`" in
3453
CYGWIN* )
3554
cygwin=true
@@ -40,26 +59,11 @@ case "`uname`" in
4059
MINGW* )
4160
msys=true
4261
;;
62+
NONSTOP* )
63+
nonstop=true
64+
;;
4365
esac
4466

45-
# Attempt to set APP_HOME
46-
# Resolve links: $0 may be a link
47-
PRG="$0"
48-
# Need this for relative symlinks.
49-
while [ -h "$PRG" ] ; do
50-
ls=`ls -ld "$PRG"`
51-
link=`expr "$ls" : '.*-> \(.*\)$'`
52-
if expr "$link" : '/.*' > /dev/null; then
53-
PRG="$link"
54-
else
55-
PRG=`dirname "$PRG"`"/$link"
56-
fi
57-
done
58-
SAVED="`pwd`"
59-
cd "`dirname \"$PRG\"`/" >/dev/null
60-
APP_HOME="`pwd -P`"
61-
cd "$SAVED" >/dev/null
62-
6367
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
6468

6569
# Determine the Java command to use to start the JVM.
@@ -85,7 +89,7 @@ location of your Java installation."
8589
fi
8690

8791
# Increase the maximum file descriptors if we can.
88-
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
92+
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
8993
MAX_FD_LIMIT=`ulimit -H -n`
9094
if [ $? -eq 0 ] ; then
9195
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
@@ -157,4 +161,9 @@ function splitJvmOpts() {
157161
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158162
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159163

164+
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
165+
if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then
166+
cd "$(dirname "$0")"
167+
fi
168+
160169
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

gradlew.bat

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88
@rem Set local scope for the variables with windows NT shell
99
if "%OS%"=="Windows_NT" setlocal
1010

11-
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12-
set DEFAULT_JVM_OPTS=
13-
1411
set DIRNAME=%~dp0
1512
if "%DIRNAME%" == "" set DIRNAME=.
1613
set APP_BASE_NAME=%~n0
1714
set APP_HOME=%DIRNAME%
1815

16+
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17+
set DEFAULT_JVM_OPTS=
18+
1919
@rem Find java.exe
2020
if defined JAVA_HOME goto findJavaFromJavaHome
2121

@@ -49,7 +49,6 @@ goto fail
4949
@rem Get command-line arguments, handling Windows variants
5050

5151
if not "%OS%" == "Windows_NT" goto win9xME_args
52-
if "%@eval[2+2]" == "4" goto 4NT_args
5352

5453
:win9xME_args
5554
@rem Slurp the command line arguments.
@@ -60,11 +59,6 @@ set _SKIP=2
6059
if "x%~1" == "x" goto execute
6160

6261
set CMD_LINE_ARGS=%*
63-
goto execute
64-
65-
:4NT_args
66-
@rem Get arguments from the 4NT Shell from JP Software
67-
set CMD_LINE_ARGS=%$
6862

6963
:execute
7064
@rem Setup the command line

src/main/groovy/com/palominolabs/gradle/task/git/clone/GitCloneTask.groovy

Lines changed: 42 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ class GitCloneTask extends DefaultTask {
5454
*/
5555
boolean strictHostKeyChecking = true
5656

57+
/**
58+
* Force a fetch even if the treeish could be resolved without a fetch. This is useful to do the equivalent of a
59+
* 'git pull': fetching will cause a branch ref like 'origin/master' to point to the latest state in the remote.
60+
*/
61+
boolean forceFetch = false
62+
5763
@TaskAction
5864
def setUpRepo() {
5965

@@ -98,35 +104,43 @@ class GitCloneTask extends DefaultTask {
98104
.readEnvironment()
99105

100106
Repository repository = repositoryBuilder.build()
101-
Git git = new Git(repository)
102-
103-
ObjectId ref = repository.resolve(treeish)
104-
105-
if (ref == null) {
106-
// we may just need to fetch
107-
git.fetch()
108-
.setTransportConfigCallback(configCallback)
109-
.call()
110-
111-
ref = repository.resolve(treeish)
112-
113-
if (ref == null) {
114-
throw new RuntimeException("Couldn't resolve <$treeish>")
107+
try {
108+
Git git = new Git(repository)
109+
try {
110+
111+
ObjectId ref = repository.resolve(treeish)
112+
113+
if (ref == null || forceFetch) {
114+
// we may just need to fetch
115+
git.fetch()
116+
.setTransportConfigCallback(configCallback)
117+
.call()
118+
119+
ref = repository.resolve(treeish)
120+
121+
if (ref == null) {
122+
throw new RuntimeException("Couldn't resolve <$treeish>")
123+
}
124+
}
125+
126+
RevCommit revCommit = new RevWalk(repository).parseCommit(ref)
127+
128+
git.checkout()
129+
.setAllPaths(true)
130+
.setStartPoint(revCommit)
131+
.call()
132+
133+
if (reset) {
134+
git.reset()
135+
.setMode(ResetCommand.ResetType.HARD)
136+
.setRef(treeish)
137+
.call()
138+
}
139+
} finally {
140+
git.close()
115141
}
116-
}
117-
118-
RevCommit revCommit = new RevWalk(repository).parseCommit(ref)
119-
120-
git.checkout()
121-
.setAllPaths(true)
122-
.setStartPoint(revCommit)
123-
.call()
124-
125-
if (reset) {
126-
git.reset()
127-
.setMode(ResetCommand.ResetType.HARD)
128-
.setRef(treeish)
129-
.call()
142+
} finally {
143+
repository.close()
130144
}
131145
}
132146
}

src/main/groovy/com/palominolabs/gradle/task/git/clone/SshAgentTransportConfigCallback.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.palominolabs.gradle.task.git.clone
22

33
import org.eclipse.jgit.api.TransportConfigCallback
4+
import org.eclipse.jgit.transport.SshTransport
45
import org.eclipse.jgit.transport.Transport
56
import org.eclipse.jgit.transport.TransportGitSsh
67

@@ -21,8 +22,8 @@ final class SshAgentTransportConfigCallback implements TransportConfigCallback {
2122

2223
@Override
2324
public void configure(Transport transport) {
24-
if (transport instanceof TransportGitSsh) {
25-
((TransportGitSsh) transport).
25+
if (transport instanceof SshTransport) {
26+
((SshTransport) transport).
2627
setSshSessionFactory(new SshAgentSshSessionFactory(knownHostsPath, trySshAgent, identityPrivKeyPath,
2728
strictHostKeyChecking))
2829
}

0 commit comments

Comments
 (0)