Package ghidra.app.merge.listing
Class ExternalFunctionMerger
java.lang.Object
ghidra.app.merge.listing.ExternalFunctionMerger
- All Implemented Interfaces:
ListingMergeConstants
Class for merging external function and label changes. This class can merge external function
and label changes that were made to the checked out version. It can determine
where there are conflicts between the latest checked in version and my
checked out version. It can then allow the user to manually merge the conflicting
functions and labels. External functions do not have bodies.
However their signatures, stacks and variables do get merged.
This class extends the AbstractFunctionMerger to handle merging of function changes when both
My and Latest have changed functions.
Note: Externals are uniquely identified by symbol ID and the name (including namespace is also used to match externals when the external is transitioned from a label to a function and vice versa.
Important: This class is intended to be used only for a single program version merge. It should be constructed, followed by an autoMerge(), and lastly each external with a conflict should have mergeConflicts() called on it.
Note: Externals are uniquely identified by symbol ID and the name (including namespace is also used to match externals when the external is transitioned from a label to a function and vice versa.
Important: This class is intended to be used only for a single program version merge. It should be constructed, followed by an autoMerge(), and lastly each external with a conflict should have mergeConflicts() called on it.
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static enum
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final int
protected static final int
protected static final int
protected int
protected int
protected ConflictPanel
protected TaskMonitor
protected static final int
protected static final int
protected int
protected StringBuffer
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected int
protected LongLongHashtable
protected int
protected AddressSet
protected ObjectIntHashtable
<Address> protected int
protected int
protected int
protected AddressSet
protected int
protected int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected ObjectIntHashtable
<Address> protected AddressSet
protected static final int
protected static final int
protected FunctionManager[]
protected int
protected static final int
protected static final int
protected StringBuffer
static final int
Keep both of the external locations added in the LATEST and in MY when in conflict.static final String
static final int
Keep the external location added in LATEST to resolve a conflict.static final int
Keep the external location added in MY to resolve a conflict.protected static final int
protected static final int
protected ListingMergeManager
protected ListingMergePanel
protected int
static final int
Merge both of the external locations added in the LATEST and in MY when in conflict.static final String
protected ProgramMultiUserMergeManager
protected static final int
protected static final int
protected static final int
protected static final int
protected int
protected int
protected int
protected Program[]
protected int
protected int
protected static final int
protected AddressFactory
protected ScrollingListChoicesPanel
protected static final String[]
protected static final String[]
protected int
protected int
protected static final int
protected static final int
protected static final int
protected static final int
protected int
protected VariousChoicesPanel
protected VerticalChoicesPanel
Fields inherited from interface ghidra.app.merge.listing.ListingMergeConstants
ASK_USER, CANCELED, CHECKED_OUT_BUTTON_NAME, CHECKED_OUT_CHECK_BOX_NAME, CHECKED_OUT_LABEL_NAME, CHECKED_OUT_LIST_BUTTON_NAME, INFO_ROW, KEEP_ALL, KEEP_BOTH, KEEP_LATEST, KEEP_MY, KEEP_ORIGINAL, KEEP_RESULT, LATEST_BUTTON_NAME, LATEST_CHECK_BOX_NAME, LATEST_LABEL_NAME, LATEST_LIST_BUTTON_NAME, LATEST_TITLE, MY_TITLE, ORIGINAL_BUTTON_NAME, ORIGINAL_CHECK_BOX_NAME, ORIGINAL_LABEL_NAME, ORIGINAL_TITLE, REMOVE_CHECKED_OUT_BUTTON_NAME, REMOVE_LATEST, REMOVE_LATEST_BUTTON_NAME, REMOVE_MY, RENAME_CHECKED_OUT_BUTTON_NAME, RENAME_LATEST, RENAME_LATEST_BUTTON_NAME, RENAME_MY, RESULT_BUTTON_NAME, RESULT_TITLE, TRUNCATE_LENGTH
-
Constructor Summary
ConstructorDescriptionExternalFunctionMerger
(ListingMergeManager listingMergeManager, boolean showListingPanel) Manages changes and conflicts for externals between the latest versioned program and the modified program being checked into version control. -
Method Summary
Modifier and TypeMethodDescriptionboolean
boolean
apply()
void
autoMerge
(int progressMin, int progressMax, TaskMonitor monitor) void
cancel()
protected void
protected int
countSetBits
(int bits) protected VariousChoicesPanel
createFunctionConflictPanel
(Function[] functions, TaskMonitor monitor) protected VerticalChoicesPanel
createFunctionReturnConflictPanel
(Function[] functions, TaskMonitor monitor) protected VariousChoicesPanel
createLocalVariableConflictPanel
(ghidra.app.merge.listing.AbstractFunctionMerger.LocalVariableConflict lvc, TaskMonitor monitor) protected VerticalChoicesPanel
createParameterSigConflictPanel
(Function[] functions, TaskMonitor monitor) protected VariousChoicesPanel
createParamInfoConflictPanel
(Function[] functions, ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict pc, TaskMonitor monitor) protected VerticalChoicesPanel
createRemoveConflictPanel
(Function[] functions, TaskMonitor monitor) protected VerticalChoicesPanel
createRemovedVarConflictPanel
(ghidra.app.merge.listing.AbstractFunctionMerger.LocalVariableConflict lvc, TaskMonitor monitor) Creates the panel for resolving a conflict due to a variable being removed.protected ScrollingListChoicesPanel
createStorageConflictPanel
(Address entryPt, Pair<List<Variable>, List<Variable>> pair, TaskMonitor monitor) protected List
<ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict> determineParameterInfoConflicts
(Function[] functions, boolean autoMerge, TaskMonitor monitor) protected boolean
determineReturnConflict
(Function[] functions, boolean autoMerge, TaskMonitor monitor) protected ghidra.app.merge.listing.FunctionVariableStorageConflicts
determineStorageConflict
(Function[] functions, TaskMonitor monitor) void
dispose()
int
getConflictCount
(Address addr) protected ScrollingListChoicesPanel
protected VariousChoicesPanel
protected VerticalChoicesPanel
protected String
protected String
getFunctionPrompt
(Address addr, Function function, String version) protected String
getName()
int
protected String[]
getReturnInfo
(Program pgm, String returnStr, String prefix, String suffix) protected String
getReturnString
(Function func, boolean includeStorage) protected String[]
getSignatureInfo
(Program pgm, Function f, String prefix, String suffix) getVariableDetails
(List<Variable> list) boolean
hasConflict
(Address addr) void
init()
protected void
initializeAutoMerge
(String progressMessage, int progressMin, int progressMax, TaskMonitor monitor) protected void
mergeBasicExternalDetail
(int type, ExternalLocation[] externalLocations, int currentChosenOption, TaskMonitor monitor) void
mergeConflicts
(int chosenConflictOption, ConflictInfoPanel listingConflictInfoPanel, TaskMonitor monitor) Performs a manual merge of external program conflicts.void
mergeConflicts
(ListingMergePanel listingPanel, Address addr, int conflictOption, TaskMonitor monitor) void
mergeConflictsForAdd
(ExternalLocation[] externalLocations, int chosenConflictOption, TaskMonitor monitor) void
mergeFunction
(ExternalLocation[] externalLocations, int currentChosenOption, TaskMonitor monitor) protected void
mergeFunctionDetail
(int type, Address entry, ProgramMerge pgmMerge, TaskMonitor monitor) protected void
mergeLocal
(Address entryPt, ghidra.app.merge.listing.AbstractFunctionMerger.LocalVariableConflict localVarConflict, int chosenConflictOption, TaskMonitor monitor) protected void
mergeLocals
(Address entryPt, List<ghidra.app.merge.listing.AbstractFunctionMerger.LocalVariableConflict> localVarConflicts, int chosenConflictOption, TaskMonitor monitor) protected void
mergeParameter
(int type, Address entry, int ordinal, int currentConflictOption, TaskMonitor monitor) protected void
mergeParameter
(int type, Function[] functions, int ordinal, int currentConflictOption, TaskMonitor monitor) protected void
mergeParameters
(Function[] functions, int chosenConflictOption, TaskMonitor monitor) protected void
mergeParamInfo
(Address entryPt, ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict pc, int chosenConflictOption, TaskMonitor monitor) protected void
mergeParamInfo
(Address entryPt, List<ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict> paramInfoConflicts, int chosenConflictOption, TaskMonitor monitor) protected void
mergeParamInfo
(Function[] functions, ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict pc, int chosenConflictOption, TaskMonitor monitor) protected void
mergeParamInfo
(Function[] functions, List<ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict> paramInfoConflicts, int chosenConflictOption, TaskMonitor monitor) protected void
mergeVariableStorage
(Address entryPt, Pair<List<Variable>, List<Variable>> pair, int currentConflictOption, TaskMonitor monitor) void
refreshResultPanel
(ExternalLocation[] externalLocations) void
replaceExternalDataType
(ExternalLocation resultExternalLocation, ExternalLocation fromExternalLocation, TaskMonitor monitor) replaceExternalDataType
replaces the data type of the external label in program1 with the data type of the external label in program2 at the specified external space address.replaceExternalLocation
(ExternalLocation toExternalLocation, ExternalLocation fromExternalLocation, ProgramMerge programMerge, TaskMonitor monitor) protected void
protected void
saveFunctionDetailConflict
(Function[] functions, int type) Saves information indicating there is a conflict that needs to be resolved for a particular part of a function as indicated by the type.protected void
updateProgressMessage
(String message) Updates the progress message details associated with this phase of the merge.
-
Field Details
-
EXTERNAL_NAMESPACE
protected static final int EXTERNAL_NAMESPACE- See Also:
-
EXTERNAL_LABEL
protected static final int EXTERNAL_LABEL- See Also:
-
EXTERNAL_ADDRESS
protected static final int EXTERNAL_ADDRESS- See Also:
-
EXTERNAL_SYMBOL_TYPE
protected static final int EXTERNAL_SYMBOL_TYPE- See Also:
-
EXTERNAL_DATA_TYPE
protected static final int EXTERNAL_DATA_TYPE- See Also:
-
EXTERNAL_FUNCTION
protected static final int EXTERNAL_FUNCTION- See Also:
-
HIGHEST_DETAIL_BIT_SHIFT
protected static final int HIGHEST_DETAIL_BIT_SHIFT- See Also:
-
ALL_EXTERNAL_DIFFERENCES
protected static final int ALL_EXTERNAL_DIFFERENCES- See Also:
-
KEEP_LATEST_ADD
public static final int KEEP_LATEST_ADDKeep the external location added in LATEST to resolve a conflict.- See Also:
-
KEEP_MY_ADD
public static final int KEEP_MY_ADDKeep the external location added in MY to resolve a conflict.- See Also:
-
KEEP_BOTH_ADDS
public static final int KEEP_BOTH_ADDSKeep both of the external locations added in the LATEST and in MY when in conflict.- See Also:
-
MERGE_BOTH_ADDS
public static final int MERGE_BOTH_ADDSMerge both of the external locations added in the LATEST and in MY when in conflict.- See Also:
-
KEEP_BOTH_BUTTON_NAME
- See Also:
-
MERGE_BOTH_BUTTON_NAME
- See Also:
-
externalDetailConflicts
-
externalDataTypeConflicts
-
externalFunctionVersusDataTypeConflicts
-
externalAddConflicts
-
totalChanges
protected int totalChanges -
changeNum
protected int changeNum -
externalFunctionRemovalChoice
protected int externalFunctionRemovalChoice -
externalFunctionChoice
protected int externalFunctionChoice -
externalDetailsChoice
protected int externalDetailsChoice -
externalDataTypeChoice
protected int externalDataTypeChoice -
externalFunctionVsDataTypeChoice
protected int externalFunctionVsDataTypeChoice -
externalAddChoice
protected int externalAddChoice -
externalRemoveChoice
protected int externalRemoveChoice -
BODY_CONFLICT_START
protected static final int BODY_CONFLICT_START- See Also:
-
BODY_CONFLICT_SIZE
protected static final int BODY_CONFLICT_SIZE- See Also:
-
FUNCTION_CONFLICT_START
protected static final int FUNCTION_CONFLICT_START- See Also:
-
FUNCTION_CONFLICT_SIZE
protected static final int FUNCTION_CONFLICT_SIZE- See Also:
-
DETAILS_CONFLICT_START
protected static final int DETAILS_CONFLICT_START- See Also:
-
DETAILS_CONFLICT_SIZE
protected static final int DETAILS_CONFLICT_SIZE- See Also:
-
FUNC_OVERLAP
protected static final int FUNC_OVERLAP- See Also:
-
FUNC_BODY
protected static final int FUNC_BODY- See Also:
-
FUNC_REMOVE
protected static final int FUNC_REMOVE- See Also:
-
FUNC_THUNK
protected static final int FUNC_THUNK- See Also:
-
FUNC_RETURN
protected static final int FUNC_RETURN- See Also:
-
FUNC_RETURN_ADDRESS_OFFSET
protected static final int FUNC_RETURN_ADDRESS_OFFSET- See Also:
-
FUNC_STACK_PURGE_SIZE
protected static final int FUNC_STACK_PURGE_SIZE- See Also:
-
FUNC_NAME
protected static final int FUNC_NAME- See Also:
-
FUNC_INLINE
protected static final int FUNC_INLINE- See Also:
-
FUNC_NO_RETURN
protected static final int FUNC_NO_RETURN- See Also:
-
FUNC_CALLING_CONVENTION
protected static final int FUNC_CALLING_CONVENTION- See Also:
-
FUNC_VAR_STORAGE
protected static final int FUNC_VAR_STORAGE- See Also:
-
FUNC_SIGNATURE
protected static final int FUNC_SIGNATURE- See Also:
-
FUNC_LOCAL_DETAILS
protected static final int FUNC_LOCAL_DETAILS- See Also:
-
FUNC_PARAM_DETAILS
protected static final int FUNC_PARAM_DETAILS- See Also:
-
FUNC_SIGNATURE_SOURCE
protected static final int FUNC_SIGNATURE_SOURCE- See Also:
-
FUNC_DETAIL_MASK
protected static final int FUNC_DETAIL_MASK- See Also:
-
VAR_NAME
protected static final int VAR_NAME- See Also:
-
VAR_DATATYPE
protected static final int VAR_DATATYPE- See Also:
-
VAR_COMMENT
protected static final int VAR_COMMENT- See Also:
-
VAR_REMOVED
protected static final int VAR_REMOVED- See Also:
-
HEADER
protected static final int HEADER- See Also:
-
RESULT
protected static final int RESULT- See Also:
-
LATEST
protected static final int LATEST- See Also:
-
MY
protected static final int MY- See Also:
-
ORIGINAL
protected static final int ORIGINAL- See Also:
-
ORIGINAL_VAR
protected static final int ORIGINAL_VAR- See Also:
-
LATEST_VAR
protected static final int LATEST_VAR- See Also:
-
MY_VAR
protected static final int MY_VAR- See Also:
-
errorBuf
-
infoBuf
-
mergeManager
-
programs
-
functionManagers
-
listingMergeManager
-
resultAddressFactory
-
latestResolvedDts
-
myResolvedDts
-
origResolvedDts
-
listingMergePanel
-
verticalConflictPanel
-
variousConflictPanel
-
scrollingListConflictPanel
-
currentConflictPanel
-
currentMonitor
-
overlapChoice
protected int overlapChoice -
bodyChoice
protected int bodyChoice -
functionReturnChoice
protected int functionReturnChoice -
removeChoice
protected int removeChoice -
detailsChoice
protected int detailsChoice -
variableStorageChoice
protected int variableStorageChoice -
parameterSignatureChoice
protected int parameterSignatureChoice -
parameterInfoChoice
protected int parameterInfoChoice -
removedLocalVariableChoice
protected int removedLocalVariableChoice -
localVariableDetailChoice
protected int localVariableDetailChoice -
thunkChoice
protected int thunkChoice -
funcConflicts
-
funcSet
-
STORAGE_CONFLICT_CHOICES
-
STORAGE_CONFLICT_HEADINGS
-
-
Constructor Details
-
ExternalFunctionMerger
Manages changes and conflicts for externals between the latest versioned program and the modified program being checked into version control.- Parameters:
listingMergeManager
- the top level merge manager for merging a program version.showListingPanel
- true to show the listing panel.
-
-
Method Details
-
init
public void init() -
getName
-
getDescription
-
allChoicesAreResolved
public boolean allChoicesAreResolved() -
apply
public boolean apply() -
cancel
public void cancel() -
autoMerge
public void autoMerge(int progressMin, int progressMax, TaskMonitor monitor) throws ProgramConflictException, MemoryAccessException, CancelledException -
initializeAutoMerge
protected void initializeAutoMerge(String progressMessage, int progressMin, int progressMax, TaskMonitor monitor) -
replaceExternalDataType
public void replaceExternalDataType(ExternalLocation resultExternalLocation, ExternalLocation fromExternalLocation, TaskMonitor monitor) throws CancelledException replaceExternalDataType
replaces the data type of the external label in program1 with the data type of the external label in program2 at the specified external space address.- Parameters:
resultExternalLocation
-fromExternalLocation
-monitor
- the task monitor for notifying the user of this merge's progress.- Throws:
CancelledException
-
mergeConflicts
public void mergeConflicts(int chosenConflictOption, ConflictInfoPanel listingConflictInfoPanel, TaskMonitor monitor) throws CancelledException Performs a manual merge of external program conflicts.- Parameters:
chosenConflictOption
- ASK_USER means interactively resolve conflicts. JUnit testing also allows setting this to LATEST, MY, or ORIGINAL to force selection of a particular version change.monitor
- task monitor for informing the user of progress.- Throws:
CancelledException
- if the user cancels the merge.
-
mergeConflictsForAdd
public void mergeConflictsForAdd(ExternalLocation[] externalLocations, int chosenConflictOption, TaskMonitor monitor) throws CancelledException - Throws:
CancelledException
-
createParamInfoConflictPanel
protected VariousChoicesPanel createParamInfoConflictPanel(Function[] functions, ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict pc, TaskMonitor monitor) -
replaceExternalLocation
public ExternalLocation replaceExternalLocation(ExternalLocation toExternalLocation, ExternalLocation fromExternalLocation, ProgramMerge programMerge, TaskMonitor monitor) throws DuplicateNameException, InvalidInputException, CancelledException -
mergeBasicExternalDetail
protected void mergeBasicExternalDetail(int type, ExternalLocation[] externalLocations, int currentChosenOption, TaskMonitor monitor) throws CancelledException - Throws:
CancelledException
-
mergeFunction
public void mergeFunction(ExternalLocation[] externalLocations, int currentChosenOption, TaskMonitor monitor) throws CancelledException, UnsupportedOperationException -
refreshResultPanel
-
saveFunctionDetailConflict
Saves information indicating there is a conflict that needs to be resolved for a particular part of a function as indicated by the type.- Parameters:
functions
- the matching set of functions from Result, Latest, My, and Original (Some may be null) which have the detailed type of conflict.type
- function conflict flags to be set (FUNC_RETURN_TYPE, FUNC_RETURN_ADDRESS_OFFSET, FUNC_STACK_PURGE_SIZE, FUNC_NAME FUNC_INLINE, FUNC_NO_RETURN, FUNC_CALLING_CONVENTION, FUNC_VAR_STORAGE FUNC_CUSTOM_STORAGE, FUNC_VAR_DETAILS, FUNC_SIGNATURE)
-
getConflictType
-
getNumConflictsResolved
public int getNumConflictsResolved() -
hasConflict
-
getConflictCount
-
mergeConflicts
public void mergeConflicts(ListingMergePanel listingPanel, Address addr, int conflictOption, TaskMonitor monitor) throws CancelledException, MemoryAccessException -
getConflicts
-
getInfoTitle
-
getErrorTitle
-
dispose
public void dispose() -
determineStorageConflict
protected ghidra.app.merge.listing.FunctionVariableStorageConflicts determineStorageConflict(Function[] functions, TaskMonitor monitor) throws CancelledException - Throws:
CancelledException
-
determineReturnConflict
protected boolean determineReturnConflict(Function[] functions, boolean autoMerge, TaskMonitor monitor) -
determineParameterInfoConflicts
protected List<ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict> determineParameterInfoConflicts(Function[] functions, boolean autoMerge, TaskMonitor monitor) -
mergeParameter
protected void mergeParameter(int type, Address entry, int ordinal, int currentConflictOption, TaskMonitor monitor) -
mergeParameter
protected void mergeParameter(int type, Function[] functions, int ordinal, int currentConflictOption, TaskMonitor monitor) -
countSetBits
protected int countSetBits(int bits) -
mergeFunctionDetail
protected void mergeFunctionDetail(int type, Address entry, ProgramMerge pgmMerge, TaskMonitor monitor) -
mergeParameters
-
mergeParamInfo
protected void mergeParamInfo(Address entryPt, List<ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict> paramInfoConflicts, int chosenConflictOption, TaskMonitor monitor) throws CancelledException - Throws:
CancelledException
-
mergeParamInfo
protected void mergeParamInfo(Address entryPt, ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict pc, int chosenConflictOption, TaskMonitor monitor) -
mergeParamInfo
protected void mergeParamInfo(Function[] functions, List<ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict> paramInfoConflicts, int chosenConflictOption, TaskMonitor monitor) throws CancelledException - Throws:
CancelledException
-
mergeParamInfo
protected void mergeParamInfo(Function[] functions, ghidra.app.merge.listing.AbstractFunctionMerger.ParamInfoConflict pc, int chosenConflictOption, TaskMonitor monitor) -
mergeLocals
protected void mergeLocals(Address entryPt, List<ghidra.app.merge.listing.AbstractFunctionMerger.LocalVariableConflict> localVarConflicts, int chosenConflictOption, TaskMonitor monitor) throws CancelledException - Throws:
CancelledException
-
mergeLocal
protected void mergeLocal(Address entryPt, ghidra.app.merge.listing.AbstractFunctionMerger.LocalVariableConflict localVarConflict, int chosenConflictOption, TaskMonitor monitor) throws CancelledException - Throws:
CancelledException
-
getEmptyVerticalPanel
-
getEmptyScrollingListChoicesPanel
-
getEmptyVariousPanel
-
getReturnString
-
getReturnInfo
-
getSignatureInfo
-
clearConflictPanel
protected void clearConflictPanel() -
runSwing
-
createLocalVariableConflictPanel
protected VariousChoicesPanel createLocalVariableConflictPanel(ghidra.app.merge.listing.AbstractFunctionMerger.LocalVariableConflict lvc, TaskMonitor monitor) -
createRemoveConflictPanel
-
createStorageConflictPanel
protected ScrollingListChoicesPanel createStorageConflictPanel(Address entryPt, Pair<List<Variable>, List<Variable>> pair, TaskMonitor monitor) -
mergeVariableStorage
protected void mergeVariableStorage(Address entryPt, Pair<List<Variable>, List<Variable>> pair, int currentConflictOption, TaskMonitor monitor) throws CancelledException- Throws:
CancelledException
-
getVariableDetails
-
createParameterSigConflictPanel
protected VerticalChoicesPanel createParameterSigConflictPanel(Function[] functions, TaskMonitor monitor) -
createFunctionConflictPanel
protected VariousChoicesPanel createFunctionConflictPanel(Function[] functions, TaskMonitor monitor) -
createFunctionReturnConflictPanel
protected VerticalChoicesPanel createFunctionReturnConflictPanel(Function[] functions, TaskMonitor monitor) -
createRemovedVarConflictPanel
protected VerticalChoicesPanel createRemovedVarConflictPanel(ghidra.app.merge.listing.AbstractFunctionMerger.LocalVariableConflict lvc, TaskMonitor monitor) Creates the panel for resolving a conflict due to a variable being removed.- Parameters:
lvc
- the local variable conflictmonitor
- status monitor- Returns:
- the panel
-
getFunctionPrompt
-
updateProgressMessage
Updates the progress message details associated with this phase of the merge.- Parameters:
message
- a message indicating what is currently occurring in this phase. Null indicates to use the default message.
-