[maintainer-tools PATCH RFC 3/3] dim: fix rr_cache_dir discovery
Andrzej Hajda
a.hajda at samsung.com
Mon Dec 17 09:54:48 UTC 2018
Hi Daniel,
Thanks for reviewing other two patches.
On 14.12.2018 17:29, Daniel Vetter wrote:
> On Fri, Dec 14, 2018 at 02:38:52PM +0100, Andrzej Hajda wrote:
>> rr_cache_dir function cannot assume REPO/.git is a directory. On the other
>> side it should be backward compatible - if rr-cache directory/link already
>> exists it should be returned.
>>
>> Signed-off-by: Andrzej Hajda <a.hajda at samsung.com>
>> ---
>> Hi,
>>
>> I am not sure of the purpose of rr-cache symbolic link, dim does not use
>> it (except its creation/removal). So this patch should be verified by
>> someone who knows better what is going on here.
>>
>> Regards
>> Andrzej
>> ---
>> dim | 20 +++++++++++---------
>> 1 file changed, 11 insertions(+), 9 deletions(-)
>>
>> diff --git a/dim b/dim
>> index 3afa8b6..b72ebfd 100755
>> --- a/dim
>> +++ b/dim
>> @@ -554,15 +554,6 @@ function check_conflicts # tree
>> true
>> }
>>
>> -function rr_cache_dir
>> -{
>> - if [ -d $DIM_PREFIX/drm-tip/.git/ ] ; then
>> - echo $DIM_PREFIX/drm-tip/.git/rr-cache
>> - else
>> - echo $DIM_PREFIX/$DIM_REPO/.git/rr-cache
>> - fi
>> -}
> I think this breaks it, rr-cache is shared among all worktrees (which is a
> big reason for having them).
If drm-tip and $DIM_REPO are worktrees (more exactly "linked working
tree" - ie .git is a file), then rr_cache_dir will return invalid path.
As a result update_rerere_cache will fail create symlink, with this kind
of error:
ln: failed to create symbolic link '/lab/dim/drm-misc-next/.git':
File exists
> And yes dim only sets up the symlink, dim rebuild-tip uses the rr-cache
> stuff automatically through git merge.
I still do not see who and when is using (ie. reading) this link.
rebuild_tip seems to use only $DIM_PREFIX/drm_rerere/rr-cache. Is there
some magic inside git itself, or I am just blind?
Regards
Andrzej
> -Daniel
>
>> -
>> function git_dir
>> {
>> local dir=${1:-$PWD}
>> @@ -574,6 +565,17 @@ function git_dir
>> fi
>> }
>>
>> +function rr_cache_dir
>> +{
>> + local dir=$(git_dir $DIM_PREFIX/$DIM_REPO)/rr-cache
>> +
>> + if [ -d $dir ]; then
>> + echo $dir
>> + else
>> + echo $(git_dir $DIM_PREFIX/drm-tip)/rr-cache
>> + fi
>> +}
>> +
>> function pull_rerere_cache
>> {
>> cd $DIM_PREFIX/drm-rerere/
>> --
>> 2.17.1
>>
>> _______________________________________________
>> dim-tools mailing list
>> dim-tools at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dim-tools
More information about the dri-devel
mailing list