From c95e4fb90959c56411cdbf0e00da481b7285f2dc Mon Sep 17 00:00:00 2001 From: Axel Richard Date: Fri, 29 Nov 2013 11:06:11 +0100 Subject: [PATCH] Manage CheckoutConflictException in pgm Change-Id: I49f92bf7cafc80404f0bd07d62ff4b25e4db6e7c Signed-off-by: Axel Richard Signed-off-by: Matthias Sohn --- .../org/eclipse/jgit/pgm/internal/CLIText.properties | 2 ++ .../src/org/eclipse/jgit/pgm/Checkout.java | 7 +++++++ .../src/org/eclipse/jgit/pgm/internal/CLIText.java | 3 +++ 3 files changed, 12 insertions(+) diff --git a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties index 1212d9365..fc83b956b 100644 --- a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties +++ b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties @@ -36,6 +36,8 @@ cantFindGitDirectory=error: can't find git directory cantWrite=Can't write {0} changesNotStagedForCommit=Changes not staged for commit: changesToBeCommitted=Changes to be committed: +checkoutConflict=error: Your local changes to the following files would be overwritten by checkout: +checkoutConflictPathLine=\t{0} commitLabel=commit configFileNotFound=configuration file {0} not found conflictingUsageOf_git_dir_andArguments=conflicting usage of --git-dir and arguments diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java index 811503972..2f35ecbab 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2010, 2012 Chris Aniszczyk + * Copyright (C) 2013, Obeo * and other copyright owners as documented in the project's IP log. * * This program and the accompanying materials are made available @@ -47,6 +48,7 @@ import java.text.MessageFormat; import org.eclipse.jgit.api.CheckoutCommand; import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.CheckoutConflictException; import org.eclipse.jgit.api.errors.RefAlreadyExistsException; import org.eclipse.jgit.api.errors.RefNotFoundException; import org.eclipse.jgit.lib.Constants; @@ -107,6 +109,11 @@ class Checkout extends TextBuiltin { } catch (RefAlreadyExistsException e) { throw die(MessageFormat.format(CLIText.get().branchAlreadyExists, name)); + } catch (CheckoutConflictException e) { + outw.println(CLIText.get().checkoutConflict); + for (String path : e.getConflictingPaths()) + outw.println(MessageFormat.format( + CLIText.get().checkoutConflictPathLine, path)); } } } diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java index de8675e0f..a51313ae1 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2010, 2013 Sasa Zivkov + * Copyright (C) 2013, Obeo * and other copyright owners as documented in the project's IP log. * * This program and the accompanying materials are made available @@ -106,6 +107,8 @@ public class CLIText extends TranslationBundle { /***/ public String cantWrite; /***/ public String changesNotStagedForCommit; /***/ public String changesToBeCommitted; + /***/ public String checkoutConflict; + /***/ public String checkoutConflictPathLine; /***/ public String commitLabel; /***/ public String conflictingUsageOf_git_dir_andArguments; /***/ public String couldNotCreateBranch;