You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Kamesh Jayachandran <ka...@collab.net> on 2006/10/19 07:44:00 UTC
[PATCH][merge-tracking]get_merge_info_for_path eliding fails when
ancestor has mergeinfo or null mergeinfo.(Take2)
Hi All,
Ignore my earlier patch with the subject '[PATCH][merge-tracking]
get_merge_info_for_path eliding fails when grand parent has mergeinfo or
grand parent has null mergeinfo.' located at
'http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=120709'.
The attached patch fixes one logical flaw in that patch.
With regards
Kamesh Jayachandran
Re: [PATCH][merge-tracking]get_merge_info_for_path eliding fails when ancestor has mergeinfo or null mergeinfo.(Take2)
Posted by Daniel Rall <dl...@collab.net>.
On Tue, 31 Oct 2006, Daniel Rall wrote:
> On Thu, 19 Oct 2006, Kamesh Jayachandran wrote:
>
> > Hi All,
> > Ignore my earlier patch with the subject '[PATCH][merge-tracking]
> > get_merge_info_for_path eliding fails when grand parent has mergeinfo or
> > grand parent has null mergeinfo.' located at
> > 'http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=120709'.
> >
> > The attached patch fixes one logical flaw in that patch.
> ...
> > get_merge_info_path fails in the following cases,
> > a)if the path is '/a/b/c/d/e' and the repo has the mergeinfo only for
> > '/a/b/c' and no direct mergeinfo for '/a/b/c/d'.
> > b)if the path is '/a/b/c/d/e' and the repo has
> > null mergeinfo(meaning record in mergeinfo_changed and no record in
> > mergeinfo) for '/a/b/c' and no direct mergeinfo for '/a/b/c/d'. The moment
> > 'null mergeinfo' is encountered eliding has to stop.
> >
> > * subversion/libsvn_fs_util/merge-info-sqlite-index.c
> > (get_merge_info_for_path):
> > No need to flag null mergeinfo with 'has_no_mergeinfo' they can be better
> > signalled with NEGATIVE_CACHE_RESULT for the 'path' in the cache hash.
> > No need of 'pathresult' variable as we can use 'cacheresult' itself.
> > When we have null merge info signal the same by setting 'cache' hash for the
> > key 'path' with NEGATIVE_CACHE_RESULT.
> > As long as we have a record in 'mergeinfo_changed' for this path and
> > revision<=rev return no need to recurse further.
> > Irrespective of 'result' translate the hash keys of 'elided parent->path'
> > and set it to cache, so that we don't loose the 'mergeinfo' of '/a/b/c'
> > during unwinding phase of recursion with path '/a/b/c/d'.
>
> Committed in r22184 with some tweaks, along with the test case posted
> on October 27th. Nice work, Kamesh.
r22189 was a necessary follow-up to fix an interaction in
'merge_tests.py 4' between this change, and Madan's r22119 (recording
of implied merge info for copy sources). It accounted for merge info
acquired during repos-to-repos copying which is now properly
inherited.
Re: [PATCH][merge-tracking]get_merge_info_for_path eliding fails when ancestor has mergeinfo or null mergeinfo.(Take2)
Posted by Daniel Rall <dl...@collab.net>.
On Thu, 19 Oct 2006, Kamesh Jayachandran wrote:
> Hi All,
> Ignore my earlier patch with the subject '[PATCH][merge-tracking]
> get_merge_info_for_path eliding fails when grand parent has mergeinfo or
> grand parent has null mergeinfo.' located at
> 'http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=120709'.
>
> The attached patch fixes one logical flaw in that patch.
...
> get_merge_info_path fails in the following cases,
> a)if the path is '/a/b/c/d/e' and the repo has the mergeinfo only for
> '/a/b/c' and no direct mergeinfo for '/a/b/c/d'.
> b)if the path is '/a/b/c/d/e' and the repo has
> null mergeinfo(meaning record in mergeinfo_changed and no record in
> mergeinfo) for '/a/b/c' and no direct mergeinfo for '/a/b/c/d'. The moment
> 'null mergeinfo' is encountered eliding has to stop.
>
> * subversion/libsvn_fs_util/merge-info-sqlite-index.c
> (get_merge_info_for_path):
> No need to flag null mergeinfo with 'has_no_mergeinfo' they can be better
> signalled with NEGATIVE_CACHE_RESULT for the 'path' in the cache hash.
> No need of 'pathresult' variable as we can use 'cacheresult' itself.
> When we have null merge info signal the same by setting 'cache' hash for the
> key 'path' with NEGATIVE_CACHE_RESULT.
> As long as we have a record in 'mergeinfo_changed' for this path and
> revision<=rev return no need to recurse further.
> Irrespective of 'result' translate the hash keys of 'elided parent->path'
> and set it to cache, so that we don't loose the 'mergeinfo' of '/a/b/c'
> during unwinding phase of recursion with path '/a/b/c/d'.
Committed in r22184 with some tweaks, along with the test case posted
on October 27th. Nice work, Kamesh.