From: David Turner Date: Wed, 24 Feb 2016 20:48:41 GMT Subject: Re: [PATCH v5 12/27] refs: forbid cross-backend ref renames Message-ID: <1456346921.18017.25.camel@twopensource.com> In-Reply-To: On Sat, 2016-02-20 at 11:30 +0700, Duy Nguyen wrote: > On Thu, Feb 18, 2016 at 12:17 PM, David Turner < > dturner@twopensource.com> wrote: > > This would be pretty weird, but since it will break, we should > > prevent > > it. > > > > Signed-off-by: David Turner > > --- > > refs.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/refs.c b/refs.c > > index f5754f2..8eb04da 100644 > > --- a/refs.c > > +++ b/refs.c > > @@ -1306,5 +1306,11 @@ int delete_refs(struct string_list > > *refnames) > > > > int rename_ref(const char *oldref, const char *newref, const char > > *logmsg) > > { > > + if ((ref_type(oldref) == REF_TYPE_NORMAL) != > > + (ref_type(newref) == REF_TYPE_NORMAL)) { > > + error(_("Both ref arguments to rename_ref must be > > normal " > > + "(or both must be per > > -worktree/pseudorefs)")); > > + return -1; > > You can do return error(...); > > > + } > > return the_refs_backend->rename_ref(oldref, newref, > > logmsg); > > LMDB backend can't deal with per-worktree rename. So either forbid > per-worktree rename here too, or fall back to files backend. Will do, thanks.