You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Greg Stein <gs...@gmail.com> on 2009/02/22 01:55:24 UTC

Re: Dump of IRC response

Alright, so then when would basename *ever* be useful?

Dirname/entryname allows for join to work, too.

On Sat, Feb 21, 2009 at 23:08, Bert Huijben <be...@vmoo.com> wrote:
> I hope you see this on irc.. otherwise:
>
> 11:52 <@gstein> Bert: in your addition of the entryname() stuff,
> 11:52 <@gstein> you state "the adminstrative area handling should use the
> entryname variants"
> 11:52 <@gstein> why is that? what makes them special?
>
> And I answered 11 hours later:
>
>
> 22:58 <@Bert> gstein: The administrative area handling uses "" as the name
> of the folder within its own entries list..
>              While basename can return the parent, '/', 'A:',
> '//server/share', etc as basename
> 23:01 <@Bert> gstein: That definition of basename works well when you want
> svn_dirent_join to work.. but you can never
>              use a workingcopy in a root drive if you use the combination
> of directoryname and basename... E.g.
>              svn_dirent_split on "A:/" gives dirname "A:/" and basename
> "A:/".. so you would start looking for the
>              entry "A:/" in the entries file located in "A:/.svn/".. while
> you really need the "" entry in that file
> 23:04 <@Bert> So basename works great if you want to split and join paths..
> but not if you need a name of a directory
>              entry.. (And I don't see a way to integrate both methods.. (I
> tried redefining basename last night, but
>              it breaks unambiguous joining :( )
> 23:06 <@Bert> By quick and direty converting all svn_path_* on local paths
> to the dirent*entry functions in entries.c,
>              lock.c and status.c I got a commit in a disk root working..
> The code just needs some extra testing before
>              I want to commit..
>
> (Feel free to follow up on dev@s.t.o or irc)
>
>
>        Bert
>
>

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1206335

Re: Dump of IRC response

Posted by Greg Stein <gs...@gmail.com>.
Here is an easy solution:

- rather than redefine svn_dirent_split() and svn_dirent_basename
right before release... let's just make them *private*

No real code change. Just a relabeling of current functionality. We
can then bring in the "right" APIs in 1.7. (and no, we can't add them
in 1.7.1)

Cheers,
-g

On Sun, Feb 22, 2009 at 15:38, Bert Huijben <be...@vmoo.com> wrote:
>> -----Original Message-----
>> From: Greg Stein [mailto:gstein@gmail.com]
>> Sent: Sunday, February 22, 2009 2:55 AM
>> To: Bert Huijben
>> Cc: dev@subversion.tigris.org
>> Subject: Re: Dump of IRC response
>>
>> Alright, so then when would basename *ever* be useful?
>>
>> Dirname/entryname allows for join to work, too.
>
> Looking at this again, I agree.
>
> The original problem I tried to solve was that basename could be "/" or any
> other valid dirent_root. (On Windows "/", "A:", "A:/" and "//server/share"
> could be returned as basename). In my first attempt I made it always return
> "/" as basename for any root.
>
> This version was not compatible with the "A:", "A:/" case as joining "A:"
> with "/" returns changes "A:" into "A:/".
>
> When I started using "" as basename for root all these problems disappeared.
>
>
> I wish I could redefine the dirent apis for 1.6 to use this convention
> everywhere. (See the note in ^/branches/1.6.x/STATUS I just added)
>
>        Bert
>
>>
>> On Sat, Feb 21, 2009 at 23:08, Bert Huijben <be...@vmoo.com> wrote:
>> > I hope you see this on irc.. otherwise:
>> >
>> > 11:52 <@gstein> Bert: in your addition of the entryname() stuff,
>> > 11:52 <@gstein> you state "the adminstrative area handling should use
>> the
>> > entryname variants"
>> > 11:52 <@gstein> why is that? what makes them special?
>> >
>> > And I answered 11 hours later:
>> >
>> >
>> > 22:58 <@Bert> gstein: The administrative area handling uses "" as the
>> name
>> > of the folder within its own entries list..
>> >              While basename can return the parent, '/', 'A:',
>> > '//server/share', etc as basename
>> > 23:01 <@Bert> gstein: That definition of basename works well when you
>> want
>> > svn_dirent_join to work.. but you can never
>> >              use a workingcopy in a root drive if you use the
>> combination
>> > of directoryname and basename... E.g.
>> >              svn_dirent_split on "A:/" gives dirname "A:/" and
>> basename
>> > "A:/".. so you would start looking for the
>> >              entry "A:/" in the entries file located in "A:/.svn/"..
>> while
>> > you really need the "" entry in that file
>> > 23:04 <@Bert> So basename works great if you want to split and join
>> paths..
>> > but not if you need a name of a directory
>> >              entry.. (And I don't see a way to integrate both
>> methods.. (I
>> > tried redefining basename last night, but
>> >              it breaks unambiguous joining :( )
>> > 23:06 <@Bert> By quick and direty converting all svn_path_* on local
>> paths
>> > to the dirent*entry functions in entries.c,
>> >              lock.c and status.c I got a commit in a disk root
>> working..
>> > The code just needs some extra testing before
>> >              I want to commit..
>> >
>> > (Feel free to follow up on dev@s.t.o or irc)
>> >
>> >
>> >        Bert
>> >
>> >
>
>

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1209415

RE: Dump of IRC response

Posted by Bert Huijben <rh...@sharpsvn.net>.
> -----Original Message-----
> From: Greg Stein [mailto:gstein@gmail.com]
> Sent: Sunday, February 22, 2009 2:55 AM
> To: Bert Huijben
> Cc: dev@subversion.tigris.org
> Subject: Re: Dump of IRC response
> 
> Alright, so then when would basename *ever* be useful?
> 
> Dirname/entryname allows for join to work, too.

Looking at this again, I agree.

The original problem I tried to solve was that basename could be "/" or any
other valid dirent_root. (On Windows "/", "A:", "A:/" and "//server/share"
could be returned as basename). In my first attempt I made it always return
"/" as basename for any root.

This version was not compatible with the "A:", "A:/" case as joining "A:"
with "/" returns changes "A:" into "A:/".

When I started using "" as basename for root all these problems disappeared.


I wish I could redefine the dirent apis for 1.6 to use this convention
everywhere. (See the note in ^/branches/1.6.x/STATUS I just added)

	Bert

> 
> On Sat, Feb 21, 2009 at 23:08, Bert Huijben <be...@vmoo.com> wrote:
> > I hope you see this on irc.. otherwise:
> >
> > 11:52 <@gstein> Bert: in your addition of the entryname() stuff,
> > 11:52 <@gstein> you state "the adminstrative area handling should use
> the
> > entryname variants"
> > 11:52 <@gstein> why is that? what makes them special?
> >
> > And I answered 11 hours later:
> >
> >
> > 22:58 <@Bert> gstein: The administrative area handling uses "" as the
> name
> > of the folder within its own entries list..
> >              While basename can return the parent, '/', 'A:',
> > '//server/share', etc as basename
> > 23:01 <@Bert> gstein: That definition of basename works well when you
> want
> > svn_dirent_join to work.. but you can never
> >              use a workingcopy in a root drive if you use the
> combination
> > of directoryname and basename... E.g.
> >              svn_dirent_split on "A:/" gives dirname "A:/" and
> basename
> > "A:/".. so you would start looking for the
> >              entry "A:/" in the entries file located in "A:/.svn/"..
> while
> > you really need the "" entry in that file
> > 23:04 <@Bert> So basename works great if you want to split and join
> paths..
> > but not if you need a name of a directory
> >              entry.. (And I don't see a way to integrate both
> methods.. (I
> > tried redefining basename last night, but
> >              it breaks unambiguous joining :( )
> > 23:06 <@Bert> By quick and direty converting all svn_path_* on local
> paths
> > to the dirent*entry functions in entries.c,
> >              lock.c and status.c I got a commit in a disk root
> working..
> > The code just needs some extra testing before
> >              I want to commit..
> >
> > (Feel free to follow up on dev@s.t.o or irc)
> >
> >
> >        Bert
> >
> >

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1209076

RE: Dump of IRC response

Posted by Bert Huijben <rh...@sharpsvn.net>.
> -----Original Message-----
> From: Greg Stein [mailto:gstein@gmail.com]
> Sent: Sunday, February 22, 2009 2:55 AM
> To: Bert Huijben
> Cc: dev@subversion.tigris.org
> Subject: Re: Dump of IRC response
> 
> Alright, so then when would basename *ever* be useful?
> 
> Dirname/entryname allows for join to work, too.

Looking at this again after a good night sleep, I agree.
(The original suggestion was from when I defined entryname to be "/" for
every root).

Since we already define that you can join "" to any path, using entryname
works just fine.


Too bad we didn't find this before 1.6 :(
(I wish we could just redefine svn_dirent_basename instead of revving this
right away).

	Bert

> On Sat, Feb 21, 2009 at 23:08, Bert Huijben <be...@vmoo.com> wrote:
> > I hope you see this on irc.. otherwise:
> >
> > 11:52 <@gstein> Bert: in your addition of the entryname() stuff,
> > 11:52 <@gstein> you state "the adminstrative area handling should use
> the
> > entryname variants"
> > 11:52 <@gstein> why is that? what makes them special?
> >
> > And I answered 11 hours later:
> >
> >
> > 22:58 <@Bert> gstein: The administrative area handling uses "" as the
> name
> > of the folder within its own entries list..
> >              While basename can return the parent, '/', 'A:',
> > '//server/share', etc as basename
> > 23:01 <@Bert> gstein: That definition of basename works well when you
> want
> > svn_dirent_join to work.. but you can never
> >              use a workingcopy in a root drive if you use the
> combination
> > of directoryname and basename... E.g.
> >              svn_dirent_split on "A:/" gives dirname "A:/" and
> basename
> > "A:/".. so you would start looking for the
> >              entry "A:/" in the entries file located in "A:/.svn/"..
> while
> > you really need the "" entry in that file
> > 23:04 <@Bert> So basename works great if you want to split and join
> paths..
> > but not if you need a name of a directory
> >              entry.. (And I don't see a way to integrate both
> methods.. (I
> > tried redefining basename last night, but
> >              it breaks unambiguous joining :( )
> > 23:06 <@Bert> By quick and direty converting all svn_path_* on local
> paths
> > to the dirent*entry functions in entries.c,
> >              lock.c and status.c I got a commit in a disk root
> working..
> > The code just needs some extra testing before
> >              I want to commit..
> >
> > (Feel free to follow up on dev@s.t.o or irc)
> >
> >
> >        Bert
> >
> >

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1208941