Skip to content

Commit 7df7b42

Browse files
authored
Merge pull request #199 from Satarus/use_subrepositories
Support repo setup for submodule/-projects
2 parents 2980909 + 028f72e commit 7df7b42

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

src/main/groovy/net/researchgate/release/GitAdapter.groovy

+14-11
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class GitAdapter extends BaseScmAdapter {
2424
private static final String AHEAD = 'ahead'
2525
private static final String BEHIND = 'behind'
2626

27+
private File workingDirectory
28+
2729
class GitConfig {
2830
String requireBranch = 'master'
2931
def pushToRemote = 'origin' // needs to be def as can be boolean or string
@@ -59,6 +61,7 @@ class GitAdapter extends BaseScmAdapter {
5961
return directory.parentFile? isSupported(directory.parentFile) : false
6062
}
6163

64+
workingDirectory = directory
6265
true
6366
}
6467

@@ -89,7 +92,7 @@ class GitAdapter extends BaseScmAdapter {
8992

9093
@Override
9194
void checkUpdateNeeded() {
92-
exec(['git', 'remote', 'update'], errorPatterns: ['error: ', 'fatal: '])
95+
exec(['git', 'remote', 'update'], directory: workingDirectory, errorPatterns: ['error: ', 'fatal: '])
9396

9497
def status = gitRemoteStatus()
9598

@@ -105,9 +108,9 @@ class GitAdapter extends BaseScmAdapter {
105108
@Override
106109
void createReleaseTag(String message) {
107110
def tagName = tagName()
108-
exec(['git', 'tag', '-a', tagName, '-m', message], errorMessage: "Duplicate tag [$tagName]", errorPatterns: ['already exists'])
111+
exec(['git', 'tag', '-a', tagName, '-m', message], directory: workingDirectory, errorMessage: "Duplicate tag [$tagName]", errorPatterns: ['already exists'])
109112
if (shouldPush()) {
110-
exec(['git', 'push', '--porcelain', extension.git.pushToRemote, tagName] + extension.git.pushOptions, errorMessage: "Failed to push tag [$tagName] to remote", errorPatterns: ['[rejected]', 'error: ', 'fatal: '])
113+
exec(['git', 'push', '--porcelain', extension.git.pushToRemote, tagName] + extension.git.pushOptions, directory: workingDirectory, errorMessage: "Failed to push tag [$tagName] to remote", errorPatterns: ['[rejected]', 'error: ', 'fatal: '])
111114
}
112115
}
113116

@@ -120,31 +123,31 @@ class GitAdapter extends BaseScmAdapter {
120123
command << '-a'
121124
}
122125

123-
exec(command, errorPatterns: ['error: ', 'fatal: '])
126+
exec(command, directory: workingDirectory, errorPatterns: ['error: ', 'fatal: '])
124127

125128
if (shouldPush()) {
126129
def branch = gitCurrentBranch()
127130
if (extension.git.pushToBranchPrefix) {
128131
branch = "HEAD:${extension.git.pushToBranchPrefix}${branch}"
129132
}
130-
exec(['git', 'push', '--porcelain', extension.git.pushToRemote, branch] + extension.git.pushOptions, errorMessage: 'Failed to push to remote', errorPatterns: ['[rejected]', 'error: ', 'fatal: '])
133+
exec(['git', 'push', '--porcelain', extension.git.pushToRemote, branch] + extension.git.pushOptions, directory: workingDirectory, errorMessage: 'Failed to push to remote', errorPatterns: ['[rejected]', 'error: ', 'fatal: '])
131134
}
132135
}
133136

134137
@Override
135138
void add(File file) {
136-
exec(['git', 'add', file.path], errorMessage: "Error adding file ${file.name}", errorPatterns: ['error: ', 'fatal: '])
139+
exec(['git', 'add', file.path], directory: workingDirectory, errorMessage: "Error adding file ${file.name}", errorPatterns: ['error: ', 'fatal: '])
137140
}
138141

139142
@Override
140143
void revert() {
141-
exec(['git', 'checkout', findPropertiesFile().name], errorMessage: 'Error reverting changes made by the release plugin.')
144+
exec(['git', 'checkout', findPropertiesFile().name], directory: workingDirectory, errorMessage: 'Error reverting changes made by the release plugin.')
142145
}
143146

144147
private boolean shouldPush() {
145148
def shouldPush = false
146149
if (extension.git.pushToRemote) {
147-
exec(['git', 'remote']).eachLine { line ->
150+
exec(['git', 'remote'], directory: workingDirectory).eachLine { line ->
148151
Matcher matcher = line =~ ~/^\s*(.*)\s*$/
149152
if (matcher.matches() && matcher.group(1) == extension.git.pushToRemote) {
150153
shouldPush = true
@@ -159,12 +162,12 @@ class GitAdapter extends BaseScmAdapter {
159162
}
160163

161164
private String gitCurrentBranch() {
162-
def matches = exec(['git', 'branch', '--no-color']).readLines().grep(~/\s*\*.*/)
165+
def matches = exec(['git', 'branch', '--no-color'], directory: workingDirectory).readLines().grep(~/\s*\*.*/)
163166
matches[0].trim() - (~/^\*\s+/)
164167
}
165168

166169
private Map<String, List<String>> gitStatus() {
167-
exec(['git', 'status', '--porcelain']).readLines().groupBy {
170+
exec(['git', 'status', '--porcelain'], directory: workingDirectory).readLines().groupBy {
168171
if (it ==~ /^\s*\?{2}.*/) {
169172
UNVERSIONED
170173
} else {
@@ -174,7 +177,7 @@ class GitAdapter extends BaseScmAdapter {
174177
}
175178

176179
private Map<String, Integer> gitRemoteStatus() {
177-
def branchStatus = exec(['git', 'status', '--porcelain', '-b']).readLines()[0]
180+
def branchStatus = exec(['git', 'status', '--porcelain', '-b'], directory: workingDirectory).readLines()[0]
178181
def aheadMatcher = branchStatus =~ /.*ahead (\d+).*/
179182
def behindMatcher = branchStatus =~ /.*behind (\d+).*/
180183

src/main/groovy/net/researchgate/release/ReleasePlugin.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ class ReleasePlugin extends PluginHelper implements Plugin<Project> {
292292
*/
293293
protected BaseScmAdapter findScmAdapter() {
294294
BaseScmAdapter adapter
295-
File projectPath = project.rootProject.projectDir.canonicalFile
295+
File projectPath = project.projectDir.canonicalFile
296296

297297
extension.scmAdapters.find {
298298
assert BaseScmAdapter.isAssignableFrom(it)

0 commit comments

Comments
 (0)