aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java32
1 files changed, 13 insertions, 19 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java b/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java
index e945c973..eb9b48ab 100644
--- a/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java
+++ b/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java
@@ -14,6 +14,7 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
@@ -48,13 +49,13 @@ public class GitActivity extends AppCompatActivity {
public static final int REQUEST_SYNC = 106;
public static final int REQUEST_CREATE = 107;
public static final int EDIT_GIT_CONFIG = 108;
+ public static final int BREAK_OUT_OF_DETACHED = 109;
private static final String TAG = "GitAct";
private static final String emailPattern = "^[^@]+@[^@]+$";
private Activity activity;
private Context context;
private String protocol;
private String connectionMode;
- private File localDir;
private String hostname;
private SharedPreferences settings;
private SshApiSessionFactory.IdentityBuilder identityBuilder;
@@ -479,6 +480,7 @@ public class GitActivity extends AppCompatActivity {
// init the server information
final EditText git_user_name = findViewById(R.id.git_user_name);
final EditText git_user_email = findViewById(R.id.git_user_email);
+ final Button abort = findViewById(R.id.git_abort_rebase);
git_user_name.setText(settings.getString("git_config_user_name", ""));
git_user_email.setText(settings.getString("git_config_user_email", ""));
@@ -492,6 +494,9 @@ public class GitActivity extends AppCompatActivity {
Ref ref = repo.getRef("refs/heads/master");
String head = ref.getObjectId().equals(objectId) ? ref.getName() : "DETACHED";
git_commit_hash.setText(String.format("%s (%s)", objectId.abbreviate(8).name(), head));
+
+ // enable the abort button only if we're rebasing
+ abort.setEnabled(repo.getRepositoryState().isRebasing());
} catch (Exception e) {
// ignore
}
@@ -532,23 +537,7 @@ public class GitActivity extends AppCompatActivity {
}
public void abortRebase(View view) {
- final Repository repo = PasswordRepository.getRepository(PasswordRepository.getRepositoryDirectory(getApplicationContext()));
- if (repo != null) {
- new GitOperation(PasswordRepository.getRepositoryDirectory(activity), activity) {
- @Override
- public void execute() {
- Log.d(TAG, "Resetting the repository");
- assert repository != null;
- GitAsyncTask tasks = new GitAsyncTask(activity, false, true, this);
- tasks.execute(new Git(repo).rebase().setOperation(RebaseCommand.Operation.ABORT));
- }
-
- @Override
- public void onSuccess() {
- showGitConfig();
- }
- }.execute();
- }
+ launchGitOperation(BREAK_OUT_OF_DETACHED);
}
/**
@@ -558,7 +547,7 @@ public class GitActivity extends AppCompatActivity {
if (PasswordRepository.getRepository(null) == null) {
PasswordRepository.initialize(this);
}
- localDir = PasswordRepository.getRepositoryDirectory(context);
+ File localDir = PasswordRepository.getRepositoryDirectory(context);
if (!saveConfiguration())
return;
@@ -649,6 +638,7 @@ public class GitActivity extends AppCompatActivity {
*/
protected void launchGitOperation(int operation) {
GitOperation op;
+ File localDir = PasswordRepository.getRepositoryDirectory(context);
try {
@@ -685,6 +675,10 @@ public class GitActivity extends AppCompatActivity {
op = new SyncOperation(localDir, activity).setCommands();
break;
+ case BREAK_OUT_OF_DETACHED:
+ op = new BreakOutOfDetached(localDir, activity).setCommands();
+ break;
+
case GitOperation.GET_SSH_KEY_FROM_CLONE:
op = new CloneOperation(localDir, activity).setCommand(hostname);
break;