Simplify development of commands: added main() to CLIGitCommand
This will execute git commands (with arguments) specified on the command line, handy for developing/debugging a sequence of arbitrary git commands working on same repository. The git working dir path can be specified via Java system property "git_work_tree". If not specified, current directory will be used. Change-Id: I621a9ec198c31e28a383818efeb4b3f835ba1d6f Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
This commit is contained in:
parent
ef757a7e12
commit
241b50be31
|
@ -11,6 +11,7 @@ Import-Package: org.eclipse.jgit.api;version="[4.2.0,4.3.0)",
|
||||||
org.eclipse.jgit.api.errors;version="[4.2.0,4.3.0)",
|
org.eclipse.jgit.api.errors;version="[4.2.0,4.3.0)",
|
||||||
org.eclipse.jgit.diff;version="[4.2.0,4.3.0)",
|
org.eclipse.jgit.diff;version="[4.2.0,4.3.0)",
|
||||||
org.eclipse.jgit.dircache;version="[4.2.0,4.3.0)",
|
org.eclipse.jgit.dircache;version="[4.2.0,4.3.0)",
|
||||||
|
org.eclipse.jgit.internal.storage.file;version="4.2.0",
|
||||||
org.eclipse.jgit.junit;version="[4.2.0,4.3.0)",
|
org.eclipse.jgit.junit;version="[4.2.0,4.3.0)",
|
||||||
org.eclipse.jgit.lib;version="[4.2.0,4.3.0)",
|
org.eclipse.jgit.lib;version="[4.2.0,4.3.0)",
|
||||||
org.eclipse.jgit.merge;version="[4.2.0,4.3.0)",
|
org.eclipse.jgit.merge;version="[4.2.0,4.3.0)",
|
||||||
|
|
|
@ -70,10 +70,20 @@ public void setUp() throws Exception {
|
||||||
trash = db.getWorkTree();
|
trash = db.getWorkTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes specified git commands (with arguments)
|
||||||
|
*
|
||||||
|
* @param cmds
|
||||||
|
* each string argument must be a valid git command line, e.g.
|
||||||
|
* "git branch -h"
|
||||||
|
* @return command output
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
protected String[] execute(String... cmds) throws Exception {
|
protected String[] execute(String... cmds) throws Exception {
|
||||||
List<String> result = new ArrayList<String>(cmds.length);
|
List<String> result = new ArrayList<String>(cmds.length);
|
||||||
for (String cmd : cmds)
|
for (String cmd : cmds) {
|
||||||
result.addAll(CLIGitCommand.execute(cmd, db));
|
result.addAll(CLIGitCommand.execute(cmd, db));
|
||||||
|
}
|
||||||
return result.toArray(new String[0]);
|
return result.toArray(new String[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,10 +43,12 @@
|
||||||
package org.eclipse.jgit.pgm;
|
package org.eclipse.jgit.pgm;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.File;
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.jgit.internal.storage.file.FileRepository;
|
||||||
import org.eclipse.jgit.lib.Repository;
|
import org.eclipse.jgit.lib.Repository;
|
||||||
import org.eclipse.jgit.pgm.internal.CLIText;
|
import org.eclipse.jgit.pgm.internal.CLIText;
|
||||||
import org.eclipse.jgit.pgm.opt.CmdLineParser;
|
import org.eclipse.jgit.pgm.opt.CmdLineParser;
|
||||||
|
@ -69,6 +71,35 @@ public List<String> getArguments() {
|
||||||
return arguments;
|
return arguments;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes git commands (with arguments) specified on the command line. The
|
||||||
|
* git repository (same for all commands) can be specified via system
|
||||||
|
* property "-Dgit_work_tree=path_to_work_tree". If the property is not set,
|
||||||
|
* current directory is used.
|
||||||
|
*
|
||||||
|
* @param args
|
||||||
|
* each element in the array must be a valid git command line,
|
||||||
|
* e.g. "git branch -h"
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
String workDir = System.getProperty("git_work_tree");
|
||||||
|
if (workDir == null) {
|
||||||
|
workDir = ".";
|
||||||
|
System.out.println(
|
||||||
|
"System property 'git_work_tree' not specified, using current directory: "
|
||||||
|
+ new File(workDir).getAbsolutePath());
|
||||||
|
}
|
||||||
|
try (Repository db = new FileRepository(workDir + "/.git")) {
|
||||||
|
for (String cmd : args) {
|
||||||
|
List<String> result = execute(cmd, db);
|
||||||
|
for (String line : result) {
|
||||||
|
System.out.println(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static List<String> execute(String str, Repository db)
|
public static List<String> execute(String str, Repository db)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -65,7 +65,7 @@ Export-Package: org.eclipse.jgit.annotations;version="4.2.0",
|
||||||
org.eclipse.jgit.junit,
|
org.eclipse.jgit.junit,
|
||||||
org.eclipse.jgit.junit.http,
|
org.eclipse.jgit.junit.http,
|
||||||
org.eclipse.jgit.http.server,
|
org.eclipse.jgit.http.server,
|
||||||
org.eclipse.jgit.java7.test,
|
org.eclipse.jgit.pgm.test,
|
||||||
org.eclipse.jgit.pgm",
|
org.eclipse.jgit.pgm",
|
||||||
org.eclipse.jgit.internal.storage.pack;version="4.2.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
|
org.eclipse.jgit.internal.storage.pack;version="4.2.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
|
||||||
org.eclipse.jgit.lib;version="4.2.0";
|
org.eclipse.jgit.lib;version="4.2.0";
|
||||||
|
|
Loading…
Reference in New Issue