Add a GitResetLast command

This way we can revert the last committed change.
This commit is contained in:
Vishesh Handa
2019-02-15 19:27:40 +01:00
parent 0a4c20f12f
commit 1f7871fe12
4 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,54 @@
package io.gitjournal.gitjournal;
import android.os.AsyncTask;
import android.util.Log;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.ResetCommand;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.TransportException;
import java.io.File;
import io.flutter.plugin.common.MethodChannel.Result;
public class GitResetLastTask extends AsyncTask<String, Void, Void> {
private final static String TAG = "GitResetLastTask";
private Result result;
public GitResetLastTask(Result _result) {
result = _result;
}
protected Void doInBackground(String... params) {
final String cloneDirPath = params[0];
File cloneDir = new File(cloneDirPath);
Log.d("GitResetLastTask", "Clone Path: " + cloneDirPath);
try {
Git git = Git.open(cloneDir);
ResetCommand command = git.reset();
command.setMode(ResetCommand.ResetType.HARD);
command.setRef("HEAD^");
command.call();
} catch (TransportException e) {
Log.d(TAG, e.toString());
result.error("FAILED", e.getMessage(), null);
return null;
} catch (GitAPIException e) {
Log.d(TAG, e.toString());
result.error("FAILED", e.getMessage(), null);
return null;
} catch (Exception e) {
Log.d(TAG, e.toString());
result.error("FAILED", e.getMessage(), null);
return null;
}
result.success(null);
return null;
}
}

View File

@ -171,6 +171,18 @@ public class MainActivity extends FlutterActivity implements MethodCallHandler {
new GitInitTask(result).execute(initLocation);
return;
} else if (call.method.equals("gitResetLast")) {
String folderName = call.argument("folderName");
if (folderName == null || folderName.isEmpty()) {
result.error("Invalid Parameters", "folderName Invalid", null);
return;
}
String cloneLocation = filesDir + "/" + folderName;
new GitResetLastTask(result).execute(cloneLocation);
return;
} else if (call.method.equals("generateSSHKeys")) {
String comment = call.argument("comment");
if (comment == null || comment.isEmpty()) {

View File

@ -150,6 +150,19 @@ Future gitPush(String folderName) async {
}
}
Future gitResetLast(String folderName) async {
print("Going to git reset last");
try {
await _platform.invokeMethod('gitResetLast', {
'folderName': folderName,
});
print("Done");
} on PlatformException catch (e) {
print("gitResetLast Failed: '${e.message}'.");
throw createGitException(e.message);
}
}
Future gitCommit({
@required String gitFolder,
@required String authorName,

View File

@ -88,6 +88,12 @@ class GitApp extends StatelessWidget {
);
},
),
RaisedButton(
child: Text("Git Reset Last"),
onPressed: () async {
gitResetLast(basePath);
},
),
RaisedButton(
child: Text("Git Migrate"),
onPressed: () async {