[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [RFC] An element-based 'svn merge'

From: Julian Foad <julianfoad_at_apache.org>
Date: Wed, 23 Dec 2015 11:57:41 +0000

I (Julian Foad) wrote:
>>> * input: a set of user-specified element matchings, each of the form
>>> (src-left-path, src-right-path, target-path)
>>> * assign EIDs (in memory) to the source-left, source-right and target trees
[...]
> The UI input data structure from step 1 could represent the
> transformation that I think you have in mind with your 'svnmucc'
> example as:
>
> { 1: ("A/D/H", "A"), 2: (nil, "A/D"), 3: ("A", "A/D/H") }
>
> a Python dictionary of (EID : (initial path, final path)).

This script attempts to convert a list of (initial_path, final_path)
pairs to a pair (initial_map, final_map) of element mappings:

  subversion/trunk/notes/move-tracking/path_pairs_to_eid_map.py

Running it with Daniel's example as input:
[[[
$ notes/move-tracking/path_pairs_to_eid_map.py
Input:
  ('A/D/H', 'A')
  (None, 'A/D')
  ('A', 'A/D/H')
Input, as (intial, final) mappings by (parent-path, name):
  (1, [('A/D', 'H'), ('', 'A')])
  (2, [None, ('A', 'D')])
  (3, [('', 'A'), ('A/D', 'H')])
# converting e1: ('A/D', 'H') -> (4, 'H')
# converting e3: ('', 'A') -> (0, 'A')
# converting e1: ('', 'A') -> (0, 'A')
# converting e2: ('A', 'D') -> (1, 'D')
# converting e3: ('A/D', 'H') -> (2, 'H')
# converting e4: (3, 'D') already has a parent-eid
Output, as (initial, final) mappings by (parent-eid, name):
  (1, [(4, 'H'), (0, 'A')])
  (2, [None, (1, 'D')])
  (3, [(0, 'A'), (2, 'H')])
  (4, [(3, 'D'), (3, 'D')])
Output, as (initial, final) mappings by paths:
  1 A/D/H A
  2 None A/D
  3 A A/D/H
  4 A/D A/D/H/D
]]]

- Julian
Received on 2015-12-23 12:58:03 CET

This is an archived mail posted to the Subversion Dev mailing list.