add a way to see the git status and abort a rebase
This commit is contained in:
parent
2ca8f94cb7
commit
8ae59a4922
4 changed files with 183 additions and 93 deletions
|
@ -26,6 +26,12 @@ import com.zeapo.pwdstore.UserPreference;
|
|||
import com.zeapo.pwdstore.utils.PasswordRepository;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.RebaseCommand;
|
||||
import org.eclipse.jgit.lib.Constants;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -252,13 +258,7 @@ public class GitActivity extends AppCompatActivity {
|
|||
setContentView(R.layout.activity_git_config);
|
||||
setTitle(R.string.title_activity_git_config);
|
||||
|
||||
// init the server information
|
||||
final EditText git_user_name = ((EditText) findViewById(R.id.git_user_name));
|
||||
final EditText git_user_email = ((EditText) findViewById(R.id.git_user_email));
|
||||
|
||||
git_user_name.setText(settings.getString("git_config_user_name", ""));
|
||||
git_user_email.setText(settings.getString("git_config_user_email", ""));
|
||||
|
||||
showGitConfig();
|
||||
break;
|
||||
case REQUEST_PULL:
|
||||
syncRepository(REQUEST_PULL);
|
||||
|
@ -463,6 +463,29 @@ public class GitActivity extends AppCompatActivity {
|
|||
finish();
|
||||
}
|
||||
|
||||
private void showGitConfig() {
|
||||
// init the server information
|
||||
final EditText git_user_name = ((EditText) findViewById(R.id.git_user_name));
|
||||
final EditText git_user_email = ((EditText) findViewById(R.id.git_user_email));
|
||||
|
||||
git_user_name.setText(settings.getString("git_config_user_name", ""));
|
||||
git_user_email.setText(settings.getString("git_config_user_email", ""));
|
||||
|
||||
// git status
|
||||
Repository repo = PasswordRepository.getRepository(PasswordRepository.getRepositoryDirectory(activity.getApplicationContext()));
|
||||
if (repo != null) {
|
||||
final TextView git_commit_hash = (TextView) findViewById(R.id.git_commit_hash);
|
||||
try {
|
||||
ObjectId objectId = repo.resolve(Constants.HEAD);
|
||||
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));
|
||||
} catch (Exception e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean saveGitConfigs() {
|
||||
// remember the settings
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
|
@ -473,9 +496,9 @@ public class GitActivity extends AppCompatActivity {
|
|||
|
||||
if (!email.matches(emailPattern)) {
|
||||
new AlertDialog.Builder(this).
|
||||
setMessage(activity.getResources().getString(R.string.invalid_email_dialog_text)).
|
||||
setPositiveButton(activity.getResources().getString(R.string.dialog_oops), null).
|
||||
show();
|
||||
setMessage(activity.getResources().getString(R.string.invalid_email_dialog_text)).
|
||||
setPositiveButton(activity.getResources().getString(R.string.dialog_oops), null).
|
||||
show();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -484,7 +507,7 @@ public class GitActivity extends AppCompatActivity {
|
|||
}
|
||||
|
||||
public void applyGitConfigs(View view) {
|
||||
if(!saveGitConfigs())
|
||||
if (!saveGitConfigs())
|
||||
return;
|
||||
|
||||
String git_user_name = settings.getString("git_config_user_name", "");
|
||||
|
@ -496,6 +519,20 @@ public class GitActivity extends AppCompatActivity {
|
|||
finish();
|
||||
}
|
||||
|
||||
public void abortRebase(View view) {
|
||||
Repository repo = PasswordRepository.getRepository(PasswordRepository.getRepositoryDirectory(getApplicationContext()));
|
||||
if (repo != null) {
|
||||
try {
|
||||
// no network or heavy computation done, it's ok to do it on the ui-thread
|
||||
new Git(repo).rebase().setOperation(RebaseCommand.Operation.ABORT).call();
|
||||
} catch (Exception e) {
|
||||
//ignore
|
||||
} finally {
|
||||
showGitConfig();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clones the repository, the directory exists, deletes it
|
||||
*/
|
||||
|
@ -573,6 +610,7 @@ public class GitActivity extends AppCompatActivity {
|
|||
|
||||
/**
|
||||
* Syncs the local repository with the remote one (either pull or push)
|
||||
*
|
||||
* @param operation the operation to execute can be REQUEST_PULL or REQUEST_PUSH
|
||||
*/
|
||||
private void syncRepository(int operation) {
|
||||
|
|
|
@ -8,6 +8,7 @@ import com.zeapo.pwdstore.R;
|
|||
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.PullCommand;
|
||||
import org.eclipse.jgit.merge.MergeStrategy;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
|
|
|
@ -1,96 +1,147 @@
|
|||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/scrollView2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
android:background="@android:color/white"
|
||||
tools:context="com.zeapo.pwdstore.git.GitActivity"
|
||||
android:background="@android:color/white">
|
||||
tools:layout_editor_absoluteX="0dp"
|
||||
tools:layout_editor_absoluteY="81dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView5"
|
||||
style="@android:style/TextAppearance.Large"
|
||||
android:layout_width="344dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:background="@drawable/bottom_line"
|
||||
android:gravity="start"
|
||||
android:paddingBottom="6dp"
|
||||
android:text="@string/git_config"
|
||||
android:textColor="@color/blue_grey_500"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/git_config"
|
||||
android:textStyle="bold"
|
||||
style="@android:style/TextAppearance.Large"
|
||||
android:gravity="start"
|
||||
android:paddingBottom="6dp"
|
||||
android:textColor="@color/blue_grey_500"
|
||||
android:background="@drawable/bottom_line"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="center_vertical">
|
||||
<TextView
|
||||
android:id="@+id/label_git_user_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="@string/git_user_name"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/git_user_name"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/git_user_name"
|
||||
android:id="@+id/label_git_user_name"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:paddingBottom="8dp"
|
||||
android:layout_alignParentStart="true" />
|
||||
<EditText
|
||||
android:id="@+id/git_user_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/git_user_name_hint"
|
||||
android:inputType="textWebEmailAddress"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/label_git_user_name"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView5" />
|
||||
|
||||
<EditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/git_user_name_hint"
|
||||
android:id="@+id/git_user_name"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_toEndOf="@+id/label_git_user_name"
|
||||
android:layout_toRightOf="@+id/label_git_user_name"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:inputType="textWebEmailAddress"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="center_vertical">
|
||||
<TextView
|
||||
android:id="@+id/label_git_user_email"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="@string/git_user_email"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/git_user_email"
|
||||
app:layout_constraintEnd_toEndOf="@+id/label_git_user_name"
|
||||
app:layout_constraintStart_toStartOf="@+id/label_git_user_name" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/git_user_email"
|
||||
android:id="@+id/label_git_user_email"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:paddingBottom="8dp"
|
||||
android:layout_alignParentStart="true" />
|
||||
<EditText
|
||||
android:id="@+id/git_user_email"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/git_user_email_hint"
|
||||
android:inputType="textWebEmailAddress"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/git_user_name"
|
||||
app:layout_constraintTop_toBottomOf="@+id/git_user_name" />
|
||||
|
||||
<EditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/git_user_email_hint"
|
||||
android:id="@+id/git_user_email"
|
||||
android:layout_marginLeft="35dp"
|
||||
android:layout_marginStart="35dp"
|
||||
android:layout_toEndOf="@+id/label_git_user_email"
|
||||
android:layout_toRightOf="@+id/label_git_user_email"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:inputType="textWebEmailAddress"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/save_button"
|
||||
android:text="@string/crypto_save"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:onClick="applyGitConfigs"/>
|
||||
</LinearLayout>
|
||||
<Button
|
||||
android:id="@+id/save_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:onClick="applyGitConfigs"
|
||||
android:text="@string/crypto_save"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/git_user_email" />
|
||||
|
||||
</ScrollView>
|
||||
<TextView
|
||||
android:id="@+id/textView6"
|
||||
style="@android:style/TextAppearance.Large"
|
||||
android:layout_width="344dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:background="@drawable/bottom_line"
|
||||
android:gravity="start"
|
||||
android:paddingBottom="6dp"
|
||||
android:text="Hackish tools"
|
||||
android:textColor="@color/blue_grey_500"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/save_button" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/git_abort_rebase"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:onClick="abortRebase"
|
||||
android:text="Abort rebase"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView7" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView7"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="Commit hash"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView6" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/git_commit_hash"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:text="HASH"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/textView7"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/textView7" />
|
||||
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
<!-- Preferences -->
|
||||
<string name="pref_git_title">Git</string>
|
||||
<string name="pref_edit_server_info">Edit git server settings</string>
|
||||
<string name="pref_edit_git_config">Edit git config</string>
|
||||
<string name="pref_edit_git_config">Git utils</string>
|
||||
<string name="pref_ssh_title">Import SSH key</string>
|
||||
<string name="pref_ssh_keygen_title">Generate SSH key pair</string>
|
||||
<string name="pref_ssh_see_key_title">View generated public SSH key</string>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue