Re: Format bump for 1.8?

2012-07-13 Thread Daniel Shahaf
Johan Corveleyn wrote on Thu, Jul 12, 2012 at 23:29:06 +0200:
 On Thu, Jul 12, 2012 at 10:56 PM, Daniel Shahaf d...@daniel.shahaf.name 
 wrote:
  Johan Corveleyn wrote on Thu, Jul 12, 2012 at 22:19:50 +0200:
  On Thu, Jul 12, 2012 at 7:31 PM, Peter Samuelson pe...@p12n.org wrote:
   [Markus Schaber]
   So my personal experience tells me that multiple-client scenarios are
   the common case, and that the deployment strategy (only using linux
   distro packages, or 3-in-1 bundles like VisualSVN) can reduce that
   problem.
  
   So, we provide a pile of libraries that maintain ABI backward
   compatibility.  You can have as many different svn client apps on a
   given system as you want, and so long as they are all using the same
   copy of our libraries, there is no cross-version compatibility problem.
  
   (Of course, there's two other related issues: 1) sharing a wc across
   two or more systems; 2) use of SVNKit.  I'll ignore both for now;
   SVNKit in particular is, and should be, Somebody Else's Problem anyway.)
 
  I think it's sad that there is so much antagonism against SVNKit in
  this community. With my svn user hat on, I consider SVNKit as just
  another part of the svn ecosystem. As a user, I don't really care if
  it's implemented in C, in Java or in Turbo Pascal :-), as long as it
  plays by the rules and acts like any other svn client. Besides, in our
  environment I have no choice but to use SVNKit: the svn plugin of my
  IDE (IntelliJ IDEA) only works with SVNKit.
 
  I think it would be beneficial for the svn ecosystem as a whole if
  this community would try to build better relations with the SVNKit
  people. Some mutual understanding certainly wouldn't hurt. I was very
  happy to see more interest by the SVNKit guys in the core project, and
  see their presence at the Berlin Hackathon (hi Dmitry :-)).
 
 
  I don't think there is antagonism against svnkit here; just they chose
  not to use our APIs, so if things break because of that it's their
  problem to fix and not ours.
 
 To restate what I said on IRC: things are not breaking because of
 SVNKit (they easily support all working copy formats back to 1.3 with
 their 1.7 client), it's because of the native clients :-), that insist
 on upgrading themselves (nagging the user that there is a new version
 that they should upgrade to) and on upgrading the working copies.
 Combined with the fact that some software of the user depends upon
 SVNKit for their svn support, and SVNKit's release was lagging behind
 for 1.7.
 
 But I'm trying to state the problem more generally: most users have
 different clients, and those can have different release cycles. For
 whatever reason. I think it's naive to ignore that problem.
 

Okay.  But in that case, the problem you claim is disregarded has
nothing to do with svnkit...

  I guess this is theoretically possible. But as a Windows user, I
  personally wouldn't like it. This is exactly one of the things that
  annoys me every time when I'm working on e.g. Solaris: What? I can't
  have two different svn versions installed at the same time? On my
  central build server with 1000 working copies I can't just quickly
  install a 1.7 version to do some tests, while all my colleagues keep
  on running svn 1.6 for the real stuff. Gah.
 
 
  Of course you can, just don't install it to the same $prefix as
  everything else.  On svn.apache.org we have 6 different svn
  installations...
 
 Okay, maybe I can. But it's hard, especially because I'm not a
 sysadmin myself on that system, can't build from source, so I have to
 depend on installable third-party packages (Solaris packages in this
 case). But okay, maybe this is going a bit in too much detail about my
 particular situation ... don't want to bring in my organizational
 problems into the equation :-) ...
 
 But on Windows, I could just zip some svnclient from another system,
 and unzip it into C:\Temp or whatever, and test whatever I want.

./configure --enable-all-static ???

 
 -- 
 Johan


RE: [PATCH]: credentials are not saved if username differs from cached version but password does not

2012-07-13 Thread Bert Huijben


 -Original Message-
 From: Dmitry Pavlenko [mailto:pavle...@tmatesoft.com]
 Sent: woensdag 20 juni 2012 18:15
 To: dev@subversion.apache.org
 Subject: [PATCH]: credentials are not saved if username differs from
cached
 version but password does not
 
 simple_providers.c (svn_auth__simple_creds_cache_get): I propose to drop
 all assignments
 need_to_save = FALSE except the initial one; otherwise assignment to
 FALSE may override existing
 TRUE value. This may happen if default_username!=username and
 default_password==password: in this
 case need_to_save will be FALSE. Not very popular case, I guess, but
 anyway.
 
 http://colabti.org/irclogger/irclogger_log/svn-dev?date=2012-06-20#l76
 
 I also propose there (not covered by the patch)
  * either not to use 'have_passtype' at all
  * or always save credentials if have_passtype == FALSE
 
 Currently if have_passtype == FALSE (i.e. passsword encryption format has
 been changed) new
 credentials are saved only if old username differs from new username
 (whatever old and new passwords
 are).
 
 What do you think?
 
 [[[
 Fix potential situation in which credentials are not saved to cache.
 
 If cached username and new username differ but passwords are the same,
 'need_to_save' flag
 will be overwritten to FALSE, and new credentials fill not be saved.
 
 * subversion/libsvn_subr/simple_providers.c
 (svn_auth__simple_creds_cache_get): drop need_to_save = FALSE
 assignments.
 ]]]

Patch applied in r1361123.

Thanks for pinging on irc.

Bert



Re: Format bump for 1.8?

2012-07-13 Thread Branko Čibej
On 12.07.2012 18:31, Peter Samuelson wrote:
 [Markus Schaber]
 So my personal experience tells me that multiple-client scenarios are
 the common case, and that the deployment strategy (only using linux
 distro packages, or 3-in-1 bundles like VisualSVN) can reduce that
 problem.
 So, we provide a pile of libraries that maintain ABI backward
 compatibility.  You can have as many different svn client apps on a
 given system as you want, and so long as they are all using the same
 copy of our libraries, there is no cross-version compatibility problem.

What? There definitely is, specifically in the case of the working copy
library. Not on the API level, of course, but that's hardly where the
WC-version problem stems from. That's why you have GUI clients that
contain copies of several different versions of SVN's client libraries
and pick the correct one depending on the version of the working copy
they happen to be dealing with at any particular moment.

And really, there's no reason why the Subversion command-line client
shouldn't do the same thing -- in fact, this is by far the easiest way
to support multiple working copy formats, even if it is less than
optimal as far as installed binary size is concerned (not to mention
release management and version juggling and testing).

-- Brane

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download



Re: Avoiding multiple library copies on a system

2012-07-13 Thread Branko Čibej
On 12.07.2012 21:20, Peter Samuelson wrote:
 Reposting under a new thread + subject line, at Daniel's suggestion.

 [Markus Schaber]
 So my personal experience tells me that multiple-client scenarios are
 the common case, and that the deployment strategy (only using linux
 distro packages, or 3-in-1 bundles like VisualSVN) can reduce that
 problem.
 So, we provide a pile of libraries that maintain ABI backward
 compatibility.  You can have as many different svn client apps on a
 given system as you want, and so long as they are all using the same
 copy of our libraries, there is no cross-version compatibility problem.

Like I said in my response to this in the other thread -- API or even
ABI compatibility is not the issue. Working copy formats, wire protocol
quirks, etc. etc. are more interesting. And I really don't think it's
up to us to tell packagers how to do their stuff.

-- Brane

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download



Re: Format bump for 1.8?

2012-07-13 Thread Hyrum K Wright
On Fri, Jul 13, 2012 at 5:32 AM, Branko Čibej br...@wandisco.com wrote:
...
 And really, there's no reason why the Subversion command-line client
 shouldn't do the same thing -- in fact, this is by far the easiest way
 to support multiple working copy formats, even if it is less than
 optimal as far as installed binary size is concerned (not to mention
 release management and version juggling and testing).

But why should we, as an open source project that only ships source
code, worry about this?  It sounds like a job for the folks that
package binaries, either via OS package management systems or the
various other binary providers around.

If the solution you suggest is ship several versions of the libraries
in the same binary, it just doesn't feel like something we should do
(or worry about, frankly).

-Hyrum


Re: Format bump for 1.8?

2012-07-13 Thread Johan Corveleyn
On Fri, Jul 13, 2012 at 11:10 AM, Daniel Shahaf d...@daniel.shahaf.name wrote:
 Johan Corveleyn wrote on Thu, Jul 12, 2012 at 23:29:06 +0200:
...
 But I'm trying to state the problem more generally: most users have
 different clients, and those can have different release cycles. For
 whatever reason. I think it's naive to ignore that problem.


 Okay.  But in that case, the problem you claim is disregarded has
 nothing to do with svnkit...

Indeed, and I never said it had (except as an example of a situation
where you have multiple clients with different release schedules).

  I guess this is theoretically possible. But as a Windows user, I
  personally wouldn't like it. This is exactly one of the things that
  annoys me every time when I'm working on e.g. Solaris: What? I can't
  have two different svn versions installed at the same time? On my
  central build server with 1000 working copies I can't just quickly
  install a 1.7 version to do some tests, while all my colleagues keep
  on running svn 1.6 for the real stuff. Gah.
 
 
  Of course you can, just don't install it to the same $prefix as
  everything else.  On svn.apache.org we have 6 different svn
  installations...

 Okay, maybe I can. But it's hard, especially because I'm not a
 sysadmin myself on that system, can't build from source, so I have to
 depend on installable third-party packages (Solaris packages in this
 case). But okay, maybe this is going a bit in too much detail about my
 particular situation ... don't want to bring in my organizational
 problems into the equation :-) ...

 But on Windows, I could just zip some svnclient from another system,
 and unzip it into C:\Temp or whatever, and test whatever I want.

 ./configure --enable-all-static ???

As I said, I don't have a build environment, don't have all the
necessary dependencies, don't want to spend time figuring this out etc
... I'm looking for a binary distribution which I can just drop in my
home directory and that will just work. But nobody seems to distribute
all-static binaries for Solaris ... it's not the unix way, I guess.
Anyway, this is probably digressing too much into a discussion of
platforms and OS'es, things that we have no control over anyway ...

-- 
Johan


Re: Format bump for 1.8?

2012-07-13 Thread Branko Čibej
On 13.07.2012 12:40, Hyrum K Wright wrote:
 On Fri, Jul 13, 2012 at 5:32 AM, Branko Čibej br...@wandisco.com wrote:
 ...
 And really, there's no reason why the Subversion command-line client
 shouldn't do the same thing -- in fact, this is by far the easiest way
 to support multiple working copy formats, even if it is less than
 optimal as far as installed binary size is concerned (not to mention
 release management and version juggling and testing).
 But why should we, as an open source project that only ships source
 code, worry about this?  It sounds like a job for the folks that
 package binaries, either via OS package management systems or the
 various other binary providers around.

 If the solution you suggest is ship several versions of the libraries
 in the same binary, it just doesn't feel like something we should do
 (or worry about, frankly).

I'm just saying it can be done, not that we should do it. On the other
hand, looking specifically at supporting older WC formats in newer
client versions -- that /is/ a feature that bears thinking about.

-- Brane

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download



Re: Avoiding multiple library copies on a system

2012-07-13 Thread Peter Samuelson

[Branko Cibej]
 Like I said in my response to this in the other thread -- API or even
 ABI compatibility is not the issue. Working copy formats, wire
 protocol quirks, etc. etc. are more interesting. And I really don't
 think it's up to us to tell packagers how to do their stuff.

Well, the reason I bring it up is, if we expect everyone to bundle a
copy of libsvn with every app, then our hard work to guarantee ABI
stability is basically pointless.  The whole reason to have a stable
ABI is so people can upgrade libsvn without rebuilding or redownloading
other apps.  At some point we must have thought that was important.

And if we did manage to achieve an ecosystem in which people are not
bundling libsvn, the problem of multiple libsvn versions talking to a
single wc would be greatly reduced.  (Maybe not completely eliminated,
as there's still the case of a wc on a network filesystem accessed from
multiple clients machines.)  That is why I wondered if there's any way
we can get there, by encouraging people to take advantage of our ABI
stability feature, which as I said we really do work hard to maintain.
But it sounds like a lot of people really do prefer the vertical
approach (every app bundles every library), in the Windows world, and
there may not be much we can do about it.

Peter


Re: Format bump for 1.8?

2012-07-13 Thread Greg Stein
On Jul 13, 2012 6:30 AM, Branko Čibej br...@wandisco.com wrote:
...
 I'm just saying it can be done, not that we should do it. On the other
 hand, looking specifically at supporting older WC formats in newer
 client versions -- that /is/ a feature that bears thinking about.

Feel free. I will state we already have support for them, and it is called
'svn upgrade'.

:-)

Cheers,
-g


Re: Avoiding multiple library copies on a system

2012-07-13 Thread Branko Čibej
On 13.07.2012 17:21, Peter Samuelson wrote:
 [Branko Cibej]
 Like I said in my response to this in the other thread -- API or even
 ABI compatibility is not the issue. Working copy formats, wire
 protocol quirks, etc. etc. are more interesting. And I really don't
 think it's up to us to tell packagers how to do their stuff.
 Well, the reason I bring it up is, if we expect everyone to bundle a
 copy of libsvn with every app, then our hard work to guarantee ABI
 stability is basically pointless.  The whole reason to have a stable
 ABI is so people can upgrade libsvn without rebuilding or redownloading
 other apps.  At some point we must have thought that was important.

This does not happen on properly managed (U|Li)nux distributions. It
does happen on Windows, simply because there is no generally accepted
location for globally shared libraries. Or rather, while Windows does
provide mechanisms for component registration, they're a total pain in
the unmentionables to use and don't apply co common or garden shared libs.

Which brings us back to my assertion that it's not our job to do what
packagers do best anyway.

-- Brane

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download



Re: Measured: btrfs COW and sqlite exclusive locking

2012-07-13 Thread Branko Čibej
On 08.07.2012 17:47, Mattias Engdegård wrote:
 The biggest surprise was that COW actually made the checkout slightly
 slower, even though no true file copies were made. I'm not sure how
 to explain this---perhaps everything is already in cache so the copies
 aren't very expensive, or the COW operations are somehow synchronising?

Copy-on-Write requires some metadata and processing overhead compared to
just-plain copying, which obviously makes it slower. It's a time vs.
space optimization.

-- Brane

-- 
Certified  Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download



Re: Incidence of criss-cross merges

2012-07-13 Thread Julian Foad
Stefan Fuhrmann wrote:
 On Thu, Jul 12, 2012 at 3:43 PM, Julian Foad wrote:
 Stefan Fuhrmann wrote:
 From a process perspective, it seems much more prudent to
 do qualified merges like merge from /trunk up to the last
 fully tested nightly build revision and merge from branch up
 to the point that I think is safe.
 
 Yes, that makes sense.
[...]
  A = /trunk
  Tested versions   *           *
  A o---o---o---o---o---o---o---o---o---o---o---o---o
     \   \     /
  \   \ __/
   \ /     \
  B o---o---o---o---o---o---o---o---o---o---o
  Safe versions     *   *
    1   2   3

  Sequence of events:
  1. Nightly testing.
  2. Catch up branch from latest stable trunk.
  3. Reintegrate branch to trunk, from latest tested version of branch.

 That sort of scenario?
 
 Exactly. The thing is that at this point the graph does
 not even depend on whether the changes to a given
 node actually produce a conflict. If the history processing
 code had any problems with this kind of merge graph,
 that problem would surface more often than actual conflicts.

Let's first clarify for other readers that we're not concerned with how the two 
criss-crossing merges themselves work: each of those is a straightforward merge 
and the fact that they cross over is not relevant to either of them.  We might 
want to build some sort of system for detecting this criss-crossing as it 
happens, with the aim of alerting the user or preventing the second merge from 
being committed, but that is not what we are talking about here.  Rather, we 
assume those two criss-crossing merges have already happened, and we are 
talking now about how a third merge (afterwards) will behave.

Currently, the symmetric merge code treats a criss-cross merge by choosing 
the later of the two possible common ancestors.  In fact, this is just a 
fall-out from choosing the youngest common ancestor: it doesn't currently fetch 
enough information to notice that the latest merges in each direction cross 
over.

The result of choosing one of the common ancestors will be a sub-optimal 
merge.  Typically, all needed changes are merged, but some unneeded changes are 
merged too (changes that had already been made in the target branch, either 
originally or through an earlier merge).  Therefore the merge will, in general, 
have spurious conflicts due to making the same change again.  In simple cases 
the duplicate changes may be auto-resolved: in particular, Subversion's 
internal text merge auto-resolves duplicate hunks of text added to a file, and 
Subversion auto-resolves duplicate added properties, but that is only going to 
happen when such additions were clean additions.

There may be other ways in which the result is sub-optimal, such as failing to 
report a conflict and just choosing one of the alternatives, where the user 
really should have been given a conflict to resolve.  Note also that 
sub-optimal doesn't necessarily mean just a bit worse that ideal, it can 
mean unusably bad in some cases.

It so happens that in trying to make automated test scenarios for all possible 
merges [1], I am running in to the issue of criss-cross merges.  In preparation 
for attempting a merge from A to B after a scenario such as this one:

  A1  A2
    ---o---x---o--  mergeinfo = B:1
   /  /  \
   \ /    \
    ---o---o---x--  mergeinfo = A:1-2
  B1  B2

my latest attempt to fake the scenario does this:

  A1  A2  AF    where AF makes changes B1
    ---o---o---o--   and sets mergeinfo = B:1
   /
   \
    ---o---o---o--  where BF makes change A1,A2
  B1  B2  BF         and sets mergeinfo = A:1-2

but I have just realized (after seeing unexpected conflicts in the following 
merge) that that actually represents a criss-cross merge:

  A1  A2
    ---o---o---x--  mergeinfo = B:1-2
   /  __\ _/
   \ /   \
    ---o---o---x--  mergeinfo = A:1
  B1  B2

The end points (the tips of the two branches) are in the same state as what I 
was trying to achieve (the first diagram), but the difference is that the state 
labaled as 'A2' does not have change 'B1' in it in this second case.  The merge 
code will use that state as the 'base' of the three-way merge, and thus the 
result it produces will be different from the result produced by a merge after 
the scenario set up in the first diagram.  The state of A2 is the only relevant 
difference between the non-criss-cross (first diagram) and criss-cross (third 
diagram) scenarios; the mergeinfo on A2 will also differ and the states and 
mergeinfo of some other nodes may also differ, but those other differences are 
not noticed by the current algorithms (symmetric and 1.7 non-reintegrate, 
that is; 1.7 reintegrate would look at different nodes).


As far as I have been able to discover, there is no generally agreed solution 
to the problem.