Envision
A visual programming IDE for object-oriented languages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends
FilePersistence::Merge Class Reference

Public Types

enum class  Kind { Unclassified , AlreadyUpToDate , FastForward , TrueMerge }
 
enum class  Stage { NotInitialized , FoundMergeBase , Classified , AutoMerged , ManualMerged , BuiltMergedTree , WroteToWorkDir , WroteToIndex , Committed }
 

Public Member Functions

bool commit (const Signature &author, const Signature &committer, const QString &message)
 
bool hasConflicts () const
 
bool isAlreadyMerged () const
 
bool isNodeInConflict (Model::NodeIdType nodeId) const
 
std::shared_ptr< GenericTreemergedTree ()
 
const QList< MergeChange * > remainingChanges () const
 
const QList< SoftConflict > & softConflicts () const
 

Private Member Functions

 Merge (QString revision, bool fastForward, GitRepository *repository)
 Merges revision into current HEAD. More...
 
void initializePipelineComponents ()
 
void performTrueMerge ()
 If the merge is non-trivial, this is where the real merge algorithm and the pipeline is run. More...
 

Private Attributes

QString baseCommitId_
 
QString headCommitId_
 Revisions. More...
 
MergeData mergeData_
 
QList< std::shared_ptr< MergePipelineComponent > > mergePipeline_
 Components are executed in the order they appear in this list. More...
 
GitRepositoryrepository_ {}
 
QString revisionCommitId_
 
Stage stage_ = Stage::NotInitialized
 

Friends

class GitRepository
 
class RunMerge
 

Member Enumeration Documentation

◆ Kind

Enumerator
Unclassified 
AlreadyUpToDate 
FastForward 
TrueMerge 

◆ Stage

Enumerator
NotInitialized 
FoundMergeBase 
Classified 
AutoMerged 
ManualMerged 
BuiltMergedTree 
WroteToWorkDir 
WroteToIndex 
Committed 

Constructor & Destructor Documentation

◆ Merge()

FilePersistence::Merge::Merge ( QString  revision,
bool  fastForward,
GitRepository repository 
)
private

Merges revision into current HEAD.

Member Function Documentation

◆ commit()

bool FilePersistence::Merge::commit ( const Signature author,
const Signature committer,
const QString &  message 
)

◆ hasConflicts()

bool FilePersistence::Merge::hasConflicts ( ) const

◆ initializePipelineComponents()

void FilePersistence::Merge::initializePipelineComponents ( )
private

◆ isAlreadyMerged()

bool FilePersistence::Merge::isAlreadyMerged ( ) const
inline

◆ isNodeInConflict()

bool FilePersistence::Merge::isNodeInConflict ( Model::NodeIdType  nodeId) const

◆ mergedTree()

std::shared_ptr< GenericTree > FilePersistence::Merge::mergedTree ( )

◆ performTrueMerge()

void FilePersistence::Merge::performTrueMerge ( )
private

If the merge is non-trivial, this is where the real merge algorithm and the pipeline is run.

◆ remainingChanges()

const QList< MergeChange * > FilePersistence::Merge::remainingChanges ( ) const
inline

◆ softConflicts()

const QList< SoftConflict > & FilePersistence::Merge::softConflicts ( ) const

Friends And Related Function Documentation

◆ GitRepository

friend class GitRepository
friend

◆ RunMerge

friend class RunMerge
friend

Member Data Documentation

◆ baseCommitId_

QString FilePersistence::Merge::baseCommitId_
private

◆ headCommitId_

QString FilePersistence::Merge::headCommitId_
private

Revisions.

◆ mergeData_

MergeData FilePersistence::Merge::mergeData_
private

◆ mergePipeline_

QList<std::shared_ptr<MergePipelineComponent> > FilePersistence::Merge::mergePipeline_
private

Components are executed in the order they appear in this list.

◆ repository_

GitRepository* FilePersistence::Merge::repository_ {}
private

◆ revisionCommitId_

QString FilePersistence::Merge::revisionCommitId_
private

◆ stage_

Stage FilePersistence::Merge::stage_ = Stage::NotInitialized
private