Subject: Re: [PATCH v7 9/9] ref: add symlink ref content check for files backend

From: shejialuo <[email-masked]>
Date: Thu, 14 Nov 2024 20:18:00 +0800

On Wed, Nov 13, 2024 at 08:36:16AM +0100, Patrick Steinhardt wrote:
> On Sun, Nov 10, 2024 at 08:10:27PM +0800, shejialuo wrote:
> > @@ -3572,8 +3579,30 @@ static int files_fsck_refs_content(struct ref_store *ref_store,
> >  
> >  	report.path = target_name;
> >  
> > -	if (S_ISLNK(iter->st.st_mode))
> > +	if (S_ISLNK(iter->st.st_mode)) {
> > +		const char* relative_referent_path = NULL;
> 
> Nit: the asterisk should stick with the variable name.
> 

I will improve this in the next version.

> > +		ret = fsck_report_ref(o, &report,
> > +				      FSCK_MSG_SYMLINK_REF,
> > +				      "use deprecated symbolic link for symref");
> > +
> > +		strbuf_add_absolute_path(&abs_gitdir, ref_store->gitdir);
> > +		strbuf_normalize_path(&abs_gitdir);
> > +		if (!is_dir_sep(abs_gitdir.buf[abs_gitdir.len - 1]))
> > +			strbuf_addch(&abs_gitdir, '/');
> > +
> > +		strbuf_add_real_path(&ref_content, iter->path.buf);
> > +		skip_prefix(ref_content.buf, abs_gitdir.buf,
> > +			    &relative_referent_path);
> > +
> > +		if (relative_referent_path)
> > +			strbuf_addstr(&referent, relative_referent_path);
> > +		else
> > +			strbuf_addbuf(&referent, &ref_content);
> > +
> > +		ret |= files_fsck_symref_target(o, &report, &referent, 1);
> >  		goto cleanup;
> > +	}
> 
> I wonder whether this logic works as expected with per-worktree symbolic
> refs which are a symlink. On the other hand I wonder whether those work
> as expected in the first place. Probably not. *shrug*
> 
> In any case, it would be nice to have a test for this.
> 

Correct, I have ignored because I add worktree support in the later
version. Let me add a new test to verify this.

> Patrick

Thanks,
Jialuo