| Title | Darcs Conflict Handling |
|---|---|
| Student | Jason Dagit |
| Mentor | David Roundy |
| Abstract | |
|
The goal of this proposal is to redesign the way Darcs handles conflicts and automatic merging to solve the current practical and theoretical problems with conflicts. Informally a conflict happens when two patches cannot be automatically merged into one repository.
Darcs suffers from several flaws in the way it handles conflicts between patches. Improper conflict handling in Darcs results in problems such as exponential time required to merge changes or failure with an error message. When this happens the user is left to manually merge and patch their repository which frustrates users and defeats the purpose of version control tools. The problems with conflict handling were believed to be rare but large projects such as GHC have shown that conflicts are more common in practice than originally believed. It is commonly believed that improper conflict handling is the biggest flaw of Darcs and must be fixed as soon as possible so that Darcs may reach its potential. By using a graph structure to store the relationships between conflicting patches, less re-computation will be involved in each merge and the decisions the user has made in the past about previous conflicts may also be stored. Storing this data will allow Darcs to handle future conflicts efficiently and correctly. An important goal of this work is to maintain the current level of abstraction for the user. The user should be able to continue working with repositories as sets of changes. The modifications to the user interface should be minimal while the changes to the user experience should be great. |
|