Generic Diff3 for Algebraic Datatypes

Uložené v:
Podrobná bibliografia
Názov: Generic Diff3 for Algebraic Datatypes
Autori: Vassena, Marco, 1991
Zdroj: Proceeding TyDe 2016, Proceedings of the 1st International Workshop on Type-Driven Development. :62-71
Predmety: Datatype-Generic Programming, Dependent Types, Diff3
Popis: Many version control systems, including Git and Mercurial, rely on diff3 to merge different revisions of the same file. More precisely diff3 automatically merges two text files, given a common base version, comparing them line by line and raising conflicts when the changes made are irreconcilable. The program ignores the actual structure of the data stored in the files, hence it might generate spurious conflicts, which must be manually resolved by the user. In this paper, we present a state-based, three-way, persistent, data-type generic diff3 algorithm whose increased precision in detecting changes reduces the number of false conflicts raised and improves its merging capabilities. We have implemented the algorithm in Agda, a proof assistant with dependent types, and developed a model to reason about “diffing” and merging. We have formalized sanity properties and specifications of diff3 and proved that our algorithm meets them. Furthermore, we have identified the minimal conditions under which the merging algorithm raises a conflict and established a structural invariant preserved.
Prístupová URL adresa: https://research.chalmers.se/publication/249246
https://research.chalmers.se/publication/508858
Databáza: SwePub
FullText Text:
  Availability: 0
CustomLinks:
  – Url: https://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=EBSCO&SrcAuth=EBSCO&DestApp=WOS&ServiceName=TransferToWoS&DestLinkType=GeneralSearchSummary&Func=Links&author=Vassena%20M
    Name: ISI
    Category: fullText
    Text: Nájsť tento článok vo Web of Science
    Icon: https://imagesrvr.epnet.com/ls/20docs.gif
    MouseOverText: Nájsť tento článok vo Web of Science
Header DbId: edsswe
DbLabel: SwePub
An: edsswe.oai.research.chalmers.se.0968fb78.aeb0.4ce3.9e1e.2090728dae88
RelevancyScore: 759
AccessLevel: 6
PubType: Conference
PubTypeId: conference
PreciseRelevancyScore: 759.438537597656
IllustrationInfo
Items – Name: Title
  Label: Title
  Group: Ti
  Data: Generic Diff3 for Algebraic Datatypes
– Name: Author
  Label: Authors
  Group: Au
  Data: <searchLink fieldCode="AR" term="%22Vassena%2C+Marco%22">Vassena, Marco</searchLink>, 1991
– Name: TitleSource
  Label: Source
  Group: Src
  Data: <i>Proceeding TyDe 2016, Proceedings of the 1st International Workshop on Type-Driven Development</i>. :62-71
– Name: Subject
  Label: Subject Terms
  Group: Su
  Data: <searchLink fieldCode="DE" term="%22Datatype-Generic+Programming%22">Datatype-Generic Programming</searchLink><br /><searchLink fieldCode="DE" term="%22Dependent+Types%22">Dependent Types</searchLink><br /><searchLink fieldCode="DE" term="%22Diff3%22">Diff3</searchLink>
– Name: Abstract
  Label: Description
  Group: Ab
  Data: Many version control systems, including Git and Mercurial, rely on diff3 to merge different revisions of the same file. More precisely diff3 automatically merges two text files, given a common base version, comparing them line by line and raising conflicts when the changes made are irreconcilable. The program ignores the actual structure of the data stored in the files, hence it might generate spurious conflicts, which must be manually resolved by the user. In this paper, we present a state-based, three-way, persistent, data-type generic diff3 algorithm whose increased precision in detecting changes reduces the number of false conflicts raised and improves its merging capabilities. We have implemented the algorithm in Agda, a proof assistant with dependent types, and developed a model to reason about “diffing” and merging. We have formalized sanity properties and specifications of diff3 and proved that our algorithm meets them. Furthermore, we have identified the minimal conditions under which the merging algorithm raises a conflict and established a structural invariant preserved.
– Name: URL
  Label: Access URL
  Group: URL
  Data: <link linkTarget="URL" linkTerm="https://research.chalmers.se/publication/249246" linkWindow="_blank">https://research.chalmers.se/publication/249246</link><br /><link linkTarget="URL" linkTerm="https://research.chalmers.se/publication/508858" linkWindow="_blank">https://research.chalmers.se/publication/508858</link>
PLink https://erproxy.cvtisr.sk/sfx/access?url=https://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsswe&AN=edsswe.oai.research.chalmers.se.0968fb78.aeb0.4ce3.9e1e.2090728dae88
RecordInfo BibRecord:
  BibEntity:
    Identifiers:
      – Type: doi
        Value: 10.1145/2976022.2976026
    Languages:
      – Text: English
    PhysicalDescription:
      Pagination:
        PageCount: 10
        StartPage: 62
    Subjects:
      – SubjectFull: Datatype-Generic Programming
        Type: general
      – SubjectFull: Dependent Types
        Type: general
      – SubjectFull: Diff3
        Type: general
    Titles:
      – TitleFull: Generic Diff3 for Algebraic Datatypes
        Type: main
  BibRelationships:
    HasContributorRelationships:
      – PersonEntity:
          Name:
            NameFull: Vassena, Marco
    IsPartOfRelationships:
      – BibEntity:
          Dates:
            – D: 01
              M: 01
              Type: published
              Y: 2016
          Identifiers:
            – Type: issn-locals
              Value: CTH_SWEPUB
          Titles:
            – TitleFull: Proceeding TyDe 2016, Proceedings of the 1st International Workshop on Type-Driven Development
              Type: main
ResultId 1