@@ -1,5 +1,5 @@ | |||
/* | |||
* Copyright (C) 2012, François Rey <eclipse.org_@_francois_._rey_._name> | |||
* Copyright (C) 2012, 2013 François Rey <eclipse.org_@_francois_._rey_._name> | |||
* and other copyright owners as documented in the project's IP log. | |||
* | |||
* This program and the accompanying materials are made available | |||
@@ -191,7 +191,7 @@ public class StatusTest extends CLIRepositoryTestCase { | |||
"# On branch master", // | |||
"# Unmerged paths:", // | |||
"# ", // | |||
"# \tunmerged", // | |||
"# \tboth modified: unmerged", // | |||
"# ", // | |||
"# Untracked files:", // | |||
"# ", // | |||
@@ -205,7 +205,7 @@ public class StatusTest extends CLIRepositoryTestCase { | |||
"# Not currently on any branch.", // | |||
"# Unmerged paths:", // | |||
"# ", // | |||
"# \tunmerged", // | |||
"# \tboth modified: unmerged", // | |||
"# ", // | |||
"# Untracked files:", // | |||
"# ", // |
@@ -153,9 +153,17 @@ serviceNotSupported=Service ''{0}'' not supported | |||
skippingObject=skipping {0} {1} | |||
statusFileListFormat=\t%1$s | |||
statusFileListFormatWithPrefix=\t%1$-11s %2$s | |||
statusFileListFormatUnmerged=\t%1$-20s%2$s | |||
statusModified=modified: | |||
statusNewFile=new file: | |||
statusRemoved=deleted: | |||
statusBothDeleted=both deleted: | |||
statusAddedByUs=added by us: | |||
statusDeletedByThem=deleted by them: | |||
statusAddedByThem=added by them: | |||
statusDeletedByUs=deleted by us: | |||
statusBothAdded=both added: | |||
statusBothModified=both modified: | |||
switchedToNewBranch=Switched to a new branch ''{0}'' | |||
switchedToBranch=Switched to branch ''{0}'' | |||
tagAlreadyExists=tag ''{0}'' already exists |
@@ -1,5 +1,5 @@ | |||
/* | |||
* Copyright (C) 2010, 2012 Sasa Zivkov <sasa.zivkov@sap.com> | |||
* Copyright (C) 2010, 2013 Sasa Zivkov <sasa.zivkov@sap.com> | |||
* and other copyright owners as documented in the project's IP log. | |||
* | |||
* This program and the accompanying materials are made available | |||
@@ -216,9 +216,17 @@ public class CLIText extends TranslationBundle { | |||
/***/ public String skippingObject; | |||
/***/ public String statusFileListFormat; | |||
/***/ public String statusFileListFormatWithPrefix; | |||
/***/ public String statusFileListFormatUnmerged; | |||
/***/ public String statusModified; | |||
/***/ public String statusNewFile; | |||
/***/ public String statusRemoved; | |||
/***/ public String statusBothDeleted; | |||
/***/ public String statusAddedByUs; | |||
/***/ public String statusDeletedByThem; | |||
/***/ public String statusAddedByThem; | |||
/***/ public String statusDeletedByUs; | |||
/***/ public String statusBothAdded; | |||
/***/ public String statusBothModified; | |||
/***/ public String switchedToNewBranch; | |||
/***/ public String switchedToBranch; | |||
/***/ public String tagAlreadyExists; |
@@ -1,5 +1,5 @@ | |||
/* | |||
* Copyright (C) 2011, François Rey <eclipse.org_@_francois_._rey_._name> | |||
* Copyright (C) 2011, 2013 François Rey <eclipse.org_@_francois_._rey_._name> | |||
* and other copyright owners as documented in the project's IP log. | |||
* | |||
* This program and the accompanying materials are made available | |||
@@ -47,10 +47,13 @@ import java.io.IOException; | |||
import java.text.MessageFormat; | |||
import java.util.ArrayList; | |||
import java.util.Collection; | |||
import java.util.Collections; | |||
import java.util.List; | |||
import java.util.Map; | |||
import org.eclipse.jgit.api.Git; | |||
import org.eclipse.jgit.lib.Constants; | |||
import org.eclipse.jgit.lib.IndexDiff.StageState; | |||
import org.eclipse.jgit.lib.Ref; | |||
import org.eclipse.jgit.lib.Repository; | |||
@@ -63,6 +66,8 @@ class Status extends TextBuiltin { | |||
protected final String statusFileListFormatWithPrefix = CLIText.get().statusFileListFormatWithPrefix; | |||
protected final String statusFileListFormatUnmerged = CLIText.get().statusFileListFormatUnmerged; | |||
@Override | |||
protected void run() throws Exception { | |||
// Print current branch name | |||
@@ -82,7 +87,8 @@ class Status extends TextBuiltin { | |||
Collection<String> modified = status.getModified(); | |||
Collection<String> missing = status.getMissing(); | |||
Collection<String> untracked = status.getUntracked(); | |||
Collection<String> unmerged = status.getConflicting(); | |||
Map<String, StageState> unmergedStates = status | |||
.getConflictingStageState(); | |||
Collection<String> toBeCommitted = new ArrayList<String>(added); | |||
toBeCommitted.addAll(changed); | |||
toBeCommitted.addAll(removed); | |||
@@ -106,12 +112,12 @@ class Status extends TextBuiltin { | |||
modified, missing, null); | |||
firstHeader = false; | |||
} | |||
int nbUnmerged = unmerged.size(); | |||
int nbUnmerged = unmergedStates.size(); | |||
if (nbUnmerged > 0) { | |||
if (!firstHeader) | |||
printSectionHeader(""); //$NON-NLS-1$ | |||
printSectionHeader(CLIText.get().unmergedPaths); | |||
printList(unmerged); | |||
printUnmerged(unmergedStates); | |||
firstHeader = false; | |||
} | |||
int nbUntracked = untracked.size(); | |||
@@ -168,4 +174,40 @@ class Status extends TextBuiltin { | |||
} | |||
return list.size(); | |||
} | |||
private void printUnmerged(Map<String, StageState> unmergedStates) | |||
throws IOException { | |||
List<String> paths = new ArrayList<String>(unmergedStates.keySet()); | |||
Collections.sort(paths); | |||
for (String path : paths) { | |||
StageState state = unmergedStates.get(path); | |||
String stateDescription = getStageStateDescription(state); | |||
outw.println(CLIText.formatLine(String.format( | |||
statusFileListFormatUnmerged, stateDescription, path))); | |||
outw.flush(); | |||
} | |||
} | |||
private static String getStageStateDescription(StageState stageState) { | |||
CLIText text = CLIText.get(); | |||
switch (stageState) { | |||
case BOTH_DELETED: | |||
return text.statusBothDeleted; | |||
case ADDED_BY_US: | |||
return text.statusAddedByUs; | |||
case DELETED_BY_THEM: | |||
return text.statusDeletedByThem; | |||
case ADDED_BY_THEM: | |||
return text.statusAddedByThem; | |||
case DELETED_BY_US: | |||
return text.statusDeletedByUs; | |||
case BOTH_ADDED: | |||
return text.statusBothAdded; | |||
case BOTH_MODIFIED: | |||
return text.statusBothModified; | |||
default: | |||
throw new IllegalArgumentException("Unknown StageState: " //$NON-NLS-1$ | |||
+ stageState); | |||
} | |||
} | |||
} |
@@ -1,5 +1,5 @@ | |||
/* | |||
* Copyright (C) 2011, Christian Halstrick <christian.halstrick@sap.com> | |||
* Copyright (C) 2011, 2013 Christian Halstrick <christian.halstrick@sap.com> | |||
* and other copyright owners as documented in the project's IP log. | |||
* | |||
* This program and the accompanying materials are made available | |||
@@ -43,9 +43,11 @@ | |||
package org.eclipse.jgit.api; | |||
import java.util.Collections; | |||
import java.util.Map; | |||
import java.util.Set; | |||
import org.eclipse.jgit.lib.IndexDiff; | |||
import org.eclipse.jgit.lib.IndexDiff.StageState; | |||
/** | |||
* A class telling where the working-tree, the index and the current HEAD differ | |||
@@ -152,6 +154,14 @@ public class Status { | |||
return Collections.unmodifiableSet(diff.getConflicting()); | |||
} | |||
/** | |||
* @return a map from conflicting path to its {@link StageState}. | |||
* @since 3.0 | |||
*/ | |||
public Map<String, StageState> getConflictingStageState() { | |||
return Collections.unmodifiableMap(diff.getConflictingStageStates()); | |||
} | |||
/** | |||
* @return set of files and folders that are ignored and not in the index. | |||
*/ |