Skip to content
This repository has been archived by the owner on Sep 15, 2023. It is now read-only.

Commit

Permalink
Fix: The commit dialog after a merge conflict resolution does not pro…
Browse files Browse the repository at this point in the history
…perly commit the files
  • Loading branch information
L1nc0ln committed Sep 6, 2021
1 parent 7781bef commit 27b318a
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 14 deletions.
32 changes: 25 additions & 7 deletions gui/src/main/java/de/adito/git/gui/actions/CommitAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import de.adito.git.impl.Util;
import io.reactivex.rxjava3.core.Observable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.swing.*;
import java.awt.event.ActionEvent;
Expand Down Expand Up @@ -82,20 +83,37 @@ public void actionPerformed(ActionEvent pEvent)
// if user didn't cancel the dialogs
if (dialogResult.doCommit())
{
progressFacade.executeInBackground("Committing Changes", pProgress -> {
List<File> files = dialogResult.getInformation().getSelectedFiles();
IRepository iRepo = repo.blockingFirst().orElseThrow(() -> new RuntimeException(Util.getResource(this.getClass(), "noValidRepoMsg")));
iRepo.commit(dialogResult.getMessage(), files, dialogResult.getInformation().getUserName(), dialogResult.getInformation().getUserMail(),
dialogResult.getInformation().isDoAmend());
prefStore.put(prefStoreInstanceKey, null);
});
performCommit(repo, progressFacade, prefStore, dialogResult, prefStoreInstanceKey);
}
else
{
prefStore.put(prefStoreInstanceKey, dialogResult.getMessage());
}
}

/**
* perform a commit based on the dialogResult
*
* @param repo Observable of the Repository, used to trigger the commit
* @param pProgressFacade IAsyncProgessFacade to display the progress of the commit
* @param pPrefStore PrefStore to store the commit message if the user aborts the commit
* @param dialogResult ICommitDialogResult that contains the info about the files the user wants to commit and if the commit should be performed at all
* @param prefStoreInstanceKey Key for the stored commit message
*/
static void performCommit(@NotNull Observable<Optional<IRepository>> repo, @NotNull IAsyncProgressFacade pProgressFacade, @NotNull IPrefStore pPrefStore,
@NotNull ICommitDialogResult<?, CommitDialogResult> dialogResult,
@Nullable String prefStoreInstanceKey)
{
pProgressFacade.executeInBackground("Committing Changes", pProgress -> {
List<File> files = dialogResult.getInformation().getSelectedFiles();
IRepository iRepo = repo.blockingFirst().orElseThrow(() -> new RuntimeException(Util.getResource(CommitAction.class, "noValidRepoMsg")));
iRepo.commit(dialogResult.getMessage(), files, dialogResult.getInformation().getUserName(), dialogResult.getInformation().getUserMail(),
dialogResult.getInformation().isDoAmend());
if (prefStoreInstanceKey != null)
pPrefStore.put(prefStoreInstanceKey, null);
});
}

private static Observable<Optional<Boolean>> _getIsEnabledObservable(@NotNull Observable<Optional<IRepository>> pRepository,
@NotNull Observable<Optional<List<IFileChangeType>>> pSelectedFilesObservable)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,12 @@
import de.adito.git.api.exception.AditoGitException;
import de.adito.git.api.exception.AmbiguousStashCommitsException;
import de.adito.git.api.exception.TargetBranchNotFoundException;
import de.adito.git.api.prefs.IPrefStore;
import de.adito.git.api.progress.IAsyncProgressFacade;
import de.adito.git.gui.dialogs.EButtons;
import de.adito.git.gui.dialogs.IDialogProvider;
import de.adito.git.gui.dialogs.panels.NotificationPanel;
import de.adito.git.gui.dialogs.results.IMergeConflictDialogResult;
import de.adito.git.gui.dialogs.results.IStashedCommitSelectionDialogResult;
import de.adito.git.gui.dialogs.results.IUserPromptDialogResult;
import de.adito.git.gui.dialogs.results.*;
import de.adito.git.gui.sequences.MergeConflictSequence;
import de.adito.git.impl.Util;
import io.reactivex.rxjava3.core.Observable;
Expand All @@ -37,14 +36,16 @@ class ResolveConflictsAction extends AbstractTableAction
private final MergeConflictSequence mergeConflictSequence;
private final IDialogProvider dialogProvider;
private final Observable<Optional<IRepository>> repository;
private final IPrefStore prefStore;
private final INotifyUtil notifyUtil;

@Inject
public ResolveConflictsAction(IAsyncProgressFacade pProgressFacade, INotifyUtil pNotifyUtil, MergeConflictSequence pMergeConflictSequence,
public ResolveConflictsAction(IAsyncProgressFacade pProgressFacade, IPrefStore pPrefStore, INotifyUtil pNotifyUtil, MergeConflictSequence pMergeConflictSequence,
IDialogProvider pDialogProvider, @Assisted Observable<Optional<IRepository>> pRepository,
@Assisted Observable<Optional<List<IFileChangeType>>> pSelectedFilesObservable)
{
super(Util.getResource(ResolveConflictsAction.class, "resolveConflictsTitle"), _getIsEnabledObservable(pSelectedFilesObservable));
prefStore = pPrefStore;
notifyUtil = pNotifyUtil;
progressFacade = pProgressFacade;
mergeConflictSequence = pMergeConflictSequence;
Expand Down Expand Up @@ -107,9 +108,12 @@ private void _resolveConflicts(IRepository pRepo) throws AditoGitException
}
else if (mergeConflictDialogResult.isFinishMerge())
{
dialogProvider.showCommitDialog(repository, pRepo.getStatus().map(pStatusOpt -> pStatusOpt.map(IFileStatus::getUncommitted)),
"merged xxx into " + pRepo.getRepositoryState().blockingFirst(Optional.empty())
.map(pRepoState -> pRepoState.getCurrentBranch().getSimpleName()).orElse(""));
ICommitDialogResult<?, CommitDialogResult> dialogResult = dialogProvider
.showCommitDialog(repository, pRepo.getStatus().map(pStatusOpt -> pStatusOpt.map(IFileStatus::getUncommitted)),
"merged xxx into " + pRepo.getRepositoryState().blockingFirst(Optional.empty())
.map(pRepoState -> pRepoState.getCurrentBranch().getSimpleName()).orElse(""));
if (dialogResult.doCommit())
CommitAction.performCommit(repository, progressFacade, prefStore, dialogResult, null);
}
}

Expand Down

0 comments on commit 27b318a

Please sign in to comment.