[Subversion Wiki] Update of "Aachen2017Practicalities" by StefanHett

2018-02-16 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017Practicalities" page has been changed by StefanHett:
https://wiki.apache.org/subversion/Aachen2017Practicalities?action=diff&rev1=3&rev2=4

6 pm:: conclusion of the hackathon
  
  === Tuesday 11/21 ===
-   Attendees:: Julian, Stefan, Bert
8 pm:: dinner ([[http://lapampa-aachen.de/|La Pampa]] -- Argentinian steak 
house)
  
  === Wednesday: 11/22 ===
-   Attendees:: Julian, Bert, Johan, Stefan, Stefan2 for the evening
8 pm:: dinner ([[http://www.laithai-aachen.de|Lai Thai]] -- Thailand 
kitchen)
9:30 pm:: billiard (table reserved for 1h - 
http://www.billardcafelichthof.de/)
  
  === Thursday: 11/23 ===
-   Attendees:: Julian, Stefan2, Bert, Johan, Stefan
8 pm:: dinner/meet and greet event 
([[https://www.facebook.com/CafeMadridAachen|Café Madrid]] -- international 
kitchen (some spanish specialities incl. some tapas))
  
  === Friday: 11/24 ===
-   Attendees:: Julian, Stefan2, Bert, Johan, Stefan
8 pm:: visiting the "Aachener Weihnachtsmarkt" with Gluehwein and local 
dishes
  
  === Saturday: 11/25 ===
-   Attendees:: Stefan2, Stefan
evening:: No dinner planned.
  


[Subversion Wiki] Update of "MoveDev" by JulianFoad

2018-02-09 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "MoveDev" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/MoveDev?action=diff&rev1=2&rev2=3

   * [[MoveDev/How to Add Moves to Svn]]
   * MoveDev/MovePhase1Plan
   * MoveDev/MoveTrackingUpdateEditor
-  * MoveDev/MovesInFSFS
+  * [[MoveDev/MovesInFSFS]]
   * MoveDev/MovesOverDeltaEditor
  


[Subversion Wiki] Update of "Berlin2013" by JulianFoad

2018-02-09 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Berlin2013" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Berlin2013?action=diff&rev1=21&rev2=22

   * Merge
* Do we need a new data model? How would that look like?
* What needs to be done for move support?
-* Implement Move Tracking -- see MoveDev/MoveDev
+* Implement Move Tracking -- see [[MoveDev/How to Add Moves to Svn]]
* In what aspects can the current merge algorithms / infrastructure be 
improved besides adding move support? (What problems are users still 
experiencing unrelated to moves?)
* Refactoring our 500+kB merge.c?
 * One issue: Updating mergeinfo (props) in the WC is currently done two 
ways -- directly, and via a 'result_mergeinfo' output hash that is written to 
disk later -- but neither way is fully supported by all the code.  Need to 
unify.


[Subversion Wiki] Update of "DesignNotes" by JulianFoad

2018-02-09 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "DesignNotes" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/DesignNotes?action=diff&rev1=43&rev2=44

  
   * [[Ev2|Editor, version 2 (Ev2)]] - Updating the way we transmit difference 
within Subversion
  
-  * MoveDev/MoveDev Move Development
+  * [[MoveDev/How to Add Moves to Svn]] Move Development
* MoveDev/Ev2MovesDesign Ev2 proposal
* MoveDev/Ev15MovesDesign Ev1+ proposal
* MoveDev/MoveTrackingUpdateEditor


[Subversion Wiki] Update of "MoveDev/MovesInFSFS" by JulianFoad

2018-02-09 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "MoveDev/MovesInFSFS" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/MoveDev/MovesInFSFS?action=diff&rev1=6&rev2=7

  A specification for changes needed in FSFS and the FS API in order to support 
moves.
  
- See also the specification of the semantics of moves:  
MoveDev/MoveDev#Move_Semantics.
+ See also the specification of the semantics of moves:  [[MoveDev/How to Add 
Moves to Svn#Move_Semantics]].
  
  === FS API ===
  These new APIs are required:


[Subversion Wiki] Update of "MoveDev" by JulianFoad

2018-02-09 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "MoveDev" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/MoveDev?action=diff&rev1=1&rev2=2

   * MoveDev/ApiChangesForMove
   * MoveDev/Ev15MovesDesign
   * MoveDev/Ev2MovesDesign
-  * MoveDev/MoveDev
+  * [[MoveDev/How to Add Moves to Svn]]
   * MoveDev/MovePhase1Plan
   * MoveDev/MoveTrackingUpdateEditor
   * MoveDev/MovesInFSFS


[Subversion Wiki] Update of "MoveDev/How to Add Moves to Svn" by JulianFoad

2018-02-09 Thread Apache subversion Wiki
Dear wiki user,

You have subscribed to a wiki page "Subversion Wiki" for change notification.

The page "MoveDev/How to Add Moves to Svn" has been renamed from 
"MoveDev/MoveDev" by JulianFoad:
https://wiki.apache.org/subversion/MoveDev/How%20to%20Add%20Moves%20to%20Svn

Comment:
It had same name as parent page, which was a bad fit for migrating to 
Confluence.



[Subversion Wiki] Update of "MoveDev" by JulianFoad

2018-02-09 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "MoveDev" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/MoveDev

New page:
 * MoveDev/ApiChangesForMove
 * MoveDev/Ev15MovesDesign
 * MoveDev/Ev2MovesDesign
 * MoveDev/MoveDev
 * MoveDev/MovePhase1Plan
 * MoveDev/MoveTrackingUpdateEditor
 * MoveDev/MovesInFSFS
 * MoveDev/MovesOverDeltaEditor


[Subversion Wiki] Update of "MergeDev" by JulianFoad

2018-02-09 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "MergeDev" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/MergeDev

New page:
 * MergeDev/DataModel
 * MergeDev/MergeTheoryTopics


[Subversion Wiki] Update of "Meetings" by JulianFoad

2017-12-01 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Meetings" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Meetings?action=diff&rev1=4&rev2=5

  === Agendas and notes from hackathons, Bar Camps and similar liquified events 
===
  
  [[Aachen2017]] - Subversion Hackathon in Aachen, Germany, 20^th^–25^th^ 
November, 2017
+ 
+ [[Berlin2015]] - Subversion Hackathon in Berlin (elego), 14^th^–18^th^ 
September, 2015
  
  [[Berlin2013]] - Subversion Hackathon in Berlin (elego), 10^th^–14^th^ June, 
2013
  


[Subversion Wiki] Update of "Aachen2017Practicalities" by StefanHett

2017-11-27 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017Practicalities" page has been changed by StefanHett:
https://wiki.apache.org/subversion/Aachen2017Practicalities?action=diff&rev1=2&rev2=3

Comment:
added Johan to Wednesday

8 pm:: dinner ([[http://lapampa-aachen.de/|La Pampa]] -- Argentinian steak 
house)
  
  === Wednesday: 11/22 ===
-   Attendees:: Julian, Bert, Stefan, Stefan2 for the evening
+   Attendees:: Julian, Bert, Johan, Stefan, Stefan2 for the evening
8 pm:: dinner ([[http://www.laithai-aachen.de|Lai Thai]] -- Thailand 
kitchen)
9:30 pm:: billiard (table reserved for 1h - 
http://www.billardcafelichthof.de/)
  


[Subversion Wiki] Update of "Aachen2017Practicalities" by StefanHett

2017-11-27 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017Practicalities" page has been changed by StefanHett:
https://wiki.apache.org/subversion/Aachen2017Practicalities?action=diff&rev1=1&rev2=2

Comment:
updated list to reflect actual attendees on these days

6 pm:: conclusion of the hackathon
  
  === Tuesday 11/21 ===
-   Attendees:: Julian, Stefan (, maybe Bert and Evgeny)
+   Attendees:: Julian, Stefan, Bert
8 pm:: dinner ([[http://lapampa-aachen.de/|La Pampa]] -- Argentinian steak 
house)
  
  === Wednesday: 11/22 ===
-   Attendees:: Julian, Bert, Stefan, possibly Stefan2 for the evening (, maybe 
Evgeny)
+   Attendees:: Julian, Bert, Stefan, Stefan2 for the evening
8 pm:: dinner ([[http://www.laithai-aachen.de|Lai Thai]] -- Thailand 
kitchen)
9:30 pm:: billiard (table reserved for 1h - 
http://www.billardcafelichthof.de/)
  
  === Thursday: 11/23 ===
-   Attendees:: Julian, Stefan2, Bert, Johan, Stefan (, maybe Evgeny)
+   Attendees:: Julian, Stefan2, Bert, Johan, Stefan
8 pm:: dinner/meet and greet event 
([[https://www.facebook.com/CafeMadridAachen|Café Madrid]] -- international 
kitchen (some spanish specialities incl. some tapas))
  
  === Friday: 11/24 ===
-   Attendees:: Julian, Stefan2, Bert, Johan, Stefan (, maybe Evgeny)
+   Attendees:: Julian, Stefan2, Bert, Johan, Stefan
8 pm:: visiting the "Aachener Weihnachtsmarkt" with Gluehwein and local 
dishes
  
  === Saturday: 11/25 ===


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-27 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=12&rev2=13

  
  === Shelve/Checkpoint ===
  
+ discussed:
+  * vision of transferring a changeset among WC, WC-shelf, repo-commit, 
repo-shelf, patch-file, code-review-system, etc.
+   * need a patch file format to support that
+   * briefly discussed command syntaxes,
+* e.g. 'commit --cl=foo@3' meaning shelved changeset 'foo' version 3
+  * nice to have a patch-hunk-selection CLI in shelving
+   * select and/or edit hunksinteractively
+   * like 'git stash --patch' and 'hg shelve --interactive'
+   * also in commit, revert, etc.
+   * code for such an interface already exists; used in merge conflict resolver
+  * possibility to support multiple changelists per path
+ 
  === Patch Format -- SVN/universal ===
+ 
+ See also: Shelve/Checkpoint, above.
  
  === Trunk-based dev ===
  


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-27 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=11&rev2=12

  == Topics Discussed/Fixed/Developed ==
  
  === Communication / Webpage ===
+ 
+ See also [[#Wiki_--_easier_to_contribute|Wiki -- easier to contribute]]
  
  === Svn 1.10 Release ===
  


[Subversion Wiki] Update of "AdminGroup" by JulianFoad

2017-11-27 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AdminGroup" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/AdminGroup?action=diff&rev1=24&rev2=25

   * StefanSperling
   * BenReser
   * Humbedooh
+  * StefanHett
  


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-24 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=10&rev2=11

  
  == Topics Discussed/Fixed/Developed ==
  
- === Releasing 1.10 ===
+ === Communication / Webpage ===
  
- === ... ===
+ === Svn 1.10 Release ===
+ 
+ === Git <-> SVN sync ===
+ 
+ === Conflict Reolution UI ===
+ 
+ Is it done? Consensus is Yes, enough for release. Still enhancing before & 
after release.
  
  === Shelve/Checkpoint ===
  
- === ... ===
+ === Patch Format -- SVN/universal ===
+ 
+ === Trunk-based dev ===
+ 
+ (For new features.) Disussion...
+ 
+ === 1.8.x and 1.9.x releases ===
+ 
+ A few fixes, including one fix for 1.8.x during the hackathon.
+ 
+ (JF) to drive releases?
+ 
+ === Wiki -- easier to contribute ===
+ 
+ SH uses Confluence at work... WYSIWYG
+ 
+ ASF deprecated MoinMoin
+ 
+ (JC) to propose ASF Confluence & open/easy access (at least in some sections).
  
  === SVN Client Plug-in Commands ===
  
@@ -30, +54 @@

  
  Solution: We could pretty easily hack up plug-in top-level subcommands. 
Inspiration from 
[[http://tortoisehg.readthedocs.io/en/latest/extensions.html|hg extensions]] 
and [[https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases|git aliases]]. The 
plug-in script would have access to at least the command-line 'svn'. We might 
want to promise one or more of our bindings are available to it too. We might 
do some argument pre-processing, such as expanding "^/" notation, before 
passing to the plug-in.
  
+ === Merkle Tree ===
+ 
+ === Obliterate ===
+ 
+ What hackathon is complete without a discussion of obliterate?
+ 
+ === Fast release cycle ===
+ 
  === View Specs ===
  
  Requirement (Johan): Export the sparse configuration of one WC and make 
another one match it.
@@ -42, +74 @@

  
  Solution: TBD
  
- === Obliterate ===
+ === svn list --search ===
  
- What hackathon is complete without a discussion of obliterate?
+ (SF) implementing reporter extensions
  
+ (JC) discussing further use cases
+ 
+ === Validate WC content matches repo ===
+ 
+ after Authz changes, Obliterate, etc.
+ 
+ SF suggests could be useful for testing authz changes.
+ 
+ After obliterate (changing/deleting some repo content), could be used to 
determine whether a WC is still "valid" against that repository. Without this, 
obliterate would leave doubt over whether each WC needs to be thrown away; fear 
and doubt is worse than just having to throw away a WC.
+ 
+ (Also discussed repairing a WC... see Obliterate.)
  
  
  Thanks to [[http://www.assembla.com|Assembla]] for sponsoring 
[[Aachen2017|SVN Hackathon 2017]].


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=9&rev2=10

  
  Advantage (1) also applies to certain other feature developments including 
shelving.
  
- Solution: We could pretty easily hack up plug-in top-level subcommands. 
Inspiration from hg and git. The plug-in script would have access to at least 
the command-line 'svn'. We might want to promise one or more of our bindings 
are available to it too. We might do some argument pre-processing, such as 
expanding "^/" notation, before passing to the plug-in.
+ Solution: We could pretty easily hack up plug-in top-level subcommands. 
Inspiration from 
[[http://tortoisehg.readthedocs.io/en/latest/extensions.html|hg extensions]] 
and [[https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases|git aliases]]. The 
plug-in script would have access to at least the command-line 'svn'. We might 
want to promise one or more of our bindings are available to it too. We might 
do some argument pre-processing, such as expanding "^/" notation, before 
passing to the plug-in.
  
  === View Specs ===
  


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=8&rev2=9

  == Topics Discussed/Fixed/Developed ==
  
  === Releasing 1.10 ===
+ 
+ === ... ===
+ 
+ === Shelve/Checkpoint ===
  
  === ... ===
  


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=7&rev2=8

  
  === ... ===
  
+ === SVN Client Plug-in Commands ===
+ 
+ Requirement: Upload my current changes, or shelved changes, to a code review 
system such as Rietveld.
+ 
+ Rietveld provides the 
[[https://github.com/rietveld-codereview/rietveld/wiki/upload.py-Usage|upload.py]]
 script for this, to be run in a Subversion (or other) WC. For Mercurial, there 
is the [[https://bitbucket.org/nicoe/hgreview/|hgreview plug-in]] which makes 
the command "hg review [...]".
+ 
+ We could of course release a version of Svn with an initial (experimental) 
"review" subcommand to do this, but a plug-in has advantages of (1) able to 
release independently; (2) if it is useful only for users who have a review 
server, other users don't need to see it.
+ 
+ Advantage (1) also applies to certain other feature developments including 
shelving.
+ 
+ Solution: We could pretty easily hack up plug-in top-level subcommands. 
Inspiration from hg and git. The plug-in script would have access to at least 
the command-line 'svn'. We might want to promise one or more of our bindings 
are available to it too. We might do some argument pre-processing, such as 
expanding "^/" notation, before passing to the plug-in.
+ 
  === View Specs ===
  
- Requirement (Johan): export the sparse configuration of one WC and make 
another one match it.
+ Requirement (Johan): Export the sparse configuration of one WC and make 
another one match it.
  
  Solution (Bert): We can use the WC-state 'Reporter' to find all the info we 
need -- including depth changes, switched URLs (if wanted), and mixed revisions 
(if wanted) -- and write this to a simple text format output. For a first hack, 
the output format could even be a series of "svn update --set-depth=..." lines 
which could be executed directly by a shell, avoiding the need to write any 
parse-and-execute code at all.
  


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=6&rev2=7

  
  
  
- <>
+ <>
  
  == Topics Discussed/Fixed/Developed ==
  


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=5&rev2=6

  
  
  
- == Potential Topics to Discuss/Fix/Develop ==
+ <>
  
- * ...
+ == Topics Discussed/Fixed/Developed ==
  
+ === Releasing 1.10 ===
- 
- 
- == Discussion Notes ==
  
  === ... ===
  
+ === View Specs ===
+ 
+ Requirement (Johan): export the sparse configuration of one WC and make 
another one match it.
+ 
+ Solution (Bert): We can use the WC-state 'Reporter' to find all the info we 
need -- including depth changes, switched URLs (if wanted), and mixed revisions 
(if wanted) -- and write this to a simple text format output. For a first hack, 
the output format could even be a series of "svn update --set-depth=..." lines 
which could be executed directly by a shell, avoiding the need to write any 
parse-and-execute code at all.
+ 
+ Also this output is just what we need to record the WC base state of a 
shelved patch.
+ 
+ Problem: The "update --set-depth" approach doesn't perform well. To apply the 
desired depths, it would first set the WC root to its desired recorded depth 
(typically empty or depth-infinity), even if most of the children are going to 
be excluded; then exclude each child that is to be excluded and expand each 
that is to be included, and so on. Inefficient. Local mods probably not handled 
properly.
+ 
+ Solution: TBD
+ 
+ === Obliterate ===
+ 
+ What hackathon is complete without a discussion of obliterate?
  
  
  


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-14 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=4&rev2=5

  * ...
  
  
+ 
  == Discussion Notes ==
  
  === ... ===
  
  
+ 
  
  Thanks to [[http://www.assembla.com|Assembla]] for sponsoring 
[[Aachen2017|SVN Hackathon 2017]].
  


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=2&rev2=3

  [[Aachen2017Practicalities]] -- location, schedule, etc.
  
  
+ 
+ == Potential Topics to Discuss/Fix/Develop ==
+ 
+ * ...
+ 
+ == Discussion Notes ==
+ 
+ === ... ===
+ 
+ 
  Thanks to [[http://www.assembla.com|Assembla]] for sponsoring 
[[Aachen2017|SVN Hackathon 2017]].
  


[Subversion Wiki] Update of "Aachen2017Practicalities" by JulianFoad

2017-11-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017Practicalities" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017Practicalities

New page:
== schedule ==

=== daily schedule (Tue-Sat) ===
  8:30 am:: Start of the hackathon
  10 am:: coffee break
  12 am to 1 pm:: lunchbreak
  4 pm:: coffee break
  6 pm:: conclusion of the hackathon

=== Tuesday 11/21 ===
  Attendees:: Julian, Stefan (, maybe Bert and Evgeny)
  8 pm:: dinner ([[http://lapampa-aachen.de/|La Pampa]] -- Argentinian steak 
house)

=== Wednesday: 11/22 ===
  Attendees:: Julian, Bert, Stefan, possibly Stefan2 for the evening (, maybe 
Evgeny)
  8 pm:: dinner ([[http://www.laithai-aachen.de|Lai Thai]] -- Thailand kitchen)
  9:30 pm:: billiard (table reserved for 1h - 
http://www.billardcafelichthof.de/)

=== Thursday: 11/23 ===
  Attendees:: Julian, Stefan2, Bert, Johan, Stefan (, maybe Evgeny)
  8 pm:: dinner/meet and greet event 
([[https://www.facebook.com/CafeMadridAachen|Café Madrid]] -- international 
kitchen (some spanish specialities incl. some tapas))

=== Friday: 11/24 ===
  Attendees:: Julian, Stefan2, Bert, Johan, Stefan (, maybe Evgeny)
  8 pm:: visiting the "Aachener Weihnachtsmarkt" with Gluehwein and local dishes

=== Saturday: 11/25 ===
  Attendees:: Stefan2, Stefan
  evening:: No dinner planned.


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017?action=diff&rev1=1&rev2=2

- [[Aachen2017MeetAndGreet|meet-and-greet event]] 23^^rd^^ November 2017
+ [[Aachen2017MeetAndGreet]] -- meet-and-greet event, 23^^rd^^ November 2017
  
+ [[Aachen2017Practicalities]] -- location, schedule, etc.
+ 
+ 
+ Thanks to [[http://www.assembla.com|Assembla]] for sponsoring 
[[Aachen2017|SVN Hackathon 2017]].
+ 


[Subversion Wiki] Update of "Aachen2017MeetAndGreet" by JulianFoad

2017-11-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017MeetAndGreet" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017MeetAndGreet?action=diff&rev1=1&rev2=2

  features/issues in person, this is your chance.'''
  
  The meet-and-greet event will happen on November 23rd in Aachen, Germany, at 
8pm
- local time (UTC: +01:00). You are invited to join us there for dinner
+ local time (UTC: +01:00) at [[https://www.facebook.com/CafeMadridAachen/|Cafe 
Madrid]] (Pontstraße 141-149). You are invited to join us there for dinner
  (or just to have a drink). Unfortunately, we can't cover your expenses
  and you'd have to pay your food/drinks yourself.
  
@@ -19, +19 @@

  
  If you are interested in joining us, please email the organizer 
[[mailto:luke1...@gmx.de|Stefan Hett]] or the 
[[mailto:priv...@subversion.apache.org|Subversion committers]] and whether you
  are planning to have dinner there as well (or just come over for a
- drink), so I can make sure we get a proper location which is large
+ drink), so we can make sure we get a proper location which is large
  enough for all of us.
  
  


[Subversion Wiki] Update of "Aachen2017MeetAndGreet" by JulianFoad

2017-11-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017MeetAndGreet" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017MeetAndGreet

New page:
The Apache Subversion project organizes a yearly hackathon for its
project members. This year we are planning something special during that
event for the community as well: A meet-and-greet event.

'''If you always wanted to talk to us in person, get to know the faces
behind the names on the mailing lists, or want to discuss some SVN
features/issues in person, this is your chance.'''

The meet-and-greet event will happen on November 23rd in Aachen, Germany, at 8pm
local time (UTC: +01:00). You are invited to join us there for dinner
(or just to have a drink). Unfortunately, we can't cover your expenses
and you'd have to pay your food/drinks yourself.

The event also provides you with the possibility to extend your PGP
key's web of trust (i.e. the event will also serve in parallel as a
key-signing event).

If you are interested in joining us, please email the organizer 
[[mailto:luke1...@gmx.de|Stefan Hett]] or the 
[[mailto:priv...@subversion.apache.org|Subversion committers]] and whether you
are planning to have dinner there as well (or just come over for a
drink), so I can make sure we get a proper location which is large
enough for all of us.


Thanks to [[http://www.assembla.com|Assembla]] for sponsoring [[Aachen2017|SVN 
Hackathon 2017]].


[Subversion Wiki] Update of "Aachen2017" by JulianFoad

2017-11-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Aachen2017" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Aachen2017

New page:
[[Aachen2017MeetAndGreet|meet-and-greet event]] 23^^rd^^ November 2017


[Subversion Wiki] Update of "Meetings" by JulianFoad

2017-11-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Meetings" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Meetings?action=diff&rev1=3&rev2=4

  === Agendas and notes from hackathons, Bar Camps and similar liquified events 
===
+ 
+ [[Aachen2017]] - Subversion Hackathon in Aachen, Germany, 20^th^–25^th^ 
November, 2017
  
  [[Berlin2013]] - Subversion Hackathon in Berlin (elego), 10^th^–14^th^ June, 
2013
  


[Subversion Wiki] Update of "DesignNotes" by StefanSperling

2017-02-10 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "DesignNotes" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/DesignNotes?action=diff&rev1=42&rev2=43

  == Design Notes ==
  The following are links to various notes about the design and implementation 
of various Subversion features and enhancements.
+ 
+  * AuthzImprovements - about the authzperf branch
  
   * LocalMoves - functional design for client-side move and rename tracking
  


[Subversion Wiki] Update of "TreeConflictTests" by StefanSperling

2017-01-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/TreeConflictTests?action=diff&rev1=18&rev2=19

Comment:
move tests 28,29,30 into the right column

  === update ===
  
  ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   || 13. resolve: 
ignore<>14. resolve: accept ||  || 15. resolve: text 
merge<>28. with parent moved -- resolve: text merge<> 29. with parent 
moved back -- resolve: text merge<>30. with parent moved twice -- resolve: 
text merge ||   ||
+ ||'''edit_f''' ||||   ||   || 13. resolve: 
ignore<>14. resolve: accept ||  || 15. resolve: text merge 
|| 28. with parent moved -- resolve: text merge<>29. with parent moved back 
-- resolve: text merge<>30. with parent moved twice -- resolve: text merge 
||
  ||'''add_f'''  |||| 31: resolve: text merge ||   ||   
   ||  ||  ||||
  ||'''add_d'''  ||||   || 34. resolve: ignore<>35. 
resolve: merge<>36. with obstructions -- resolve: merge||  ||   
   ||  ||||
  ||'''rm_f'''   ||||   ||   ||  || 
 ||  ||||


[Subversion Wiki] Update of "TreeConflictTests" by StefanSperling

2017-01-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/TreeConflictTests?action=diff&rev1=17&rev2=18

Comment:
add tests 28.29.30

  === update ===
  
  ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   || 13. resolve: 
ignore<>14. resolve: accept ||  || 15. resolve: text merge 
||   ||
+ ||'''edit_f''' ||||   ||   || 13. resolve: 
ignore<>14. resolve: accept ||  || 15. resolve: text 
merge<>28. with parent moved -- resolve: text merge<> 29. with parent 
moved back -- resolve: text merge<>30. with parent moved twice -- resolve: 
text merge ||   ||
  ||'''add_f'''  |||| 31: resolve: text merge ||   ||   
   ||  ||  ||||
  ||'''add_d'''  ||||   || 34. resolve: ignore<>35. 
resolve: merge<>36. with obstructions -- resolve: merge||  ||   
   ||  ||||
  ||'''rm_f'''   ||||   ||   ||  || 
 ||  ||||


[Subversion Wiki] Update of "TreeConflictTests" by StefanSperling

2017-01-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/TreeConflictTests?action=diff&rev1=16&rev2=17

Comment:
add tests 34,35,36

  ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
  ||'''edit_f''' ||||   ||   || 13. resolve: 
ignore<>14. resolve: accept ||  || 15. resolve: text merge 
||   ||
  ||'''add_f'''  |||| 31: resolve: text merge ||   ||   
   ||  ||  ||||
- ||'''add_d'''  ||||   ||   ||  || 
 ||  ||||
+ ||'''add_d'''  ||||   || 34. resolve: ignore<>35. 
resolve: merge<>36. with obstructions -- resolve: merge||  ||   
   ||  ||||
  ||'''rm_f'''   ||||   ||   ||  || 
 ||  ||||
  ||'''rm_d'''   ||||   ||   ||  || 
 ||  ||||
  ||'''mv_f'''   ||||   ||   ||  || 
 ||  || 32: resolve: move dir merge ||


[Subversion Wiki] Update of "TreeConflictTests" by StefanSperling

2017-01-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/TreeConflictTests?action=diff&rev1=15&rev2=16

Comment:
move miscategorized tests 3 and 4 into add dir vs add dir set of tests

  
  ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
  ||'''edit_f''' ||||   ||   || 10. resolve: 
ignore<>11. resolve: accept<>24. incoming replace: options ||  || 
12. resolve: text merge<>24. resolve: merge with text conflict<>22. 
chained move - resolve: text merge<>27: resolve: text merge (prop 
conflict)<>33: resolve: text merge (with keywords) || 17. incoming move 
dir: options<>18. with local edit<>19. with local add<>23. with 
moved file ||
- ||'''add_f'''  |||| 1. resolve: ignore<>2. resolve: text 
merge<>3. resolve: replace<>4. resolve: replace and merge ||   ||   
   ||  ||  ||||
+ ||'''add_f'''  |||| 1. resolve: ignore<>2. resolve: text 
merge||   ||  ||  ||  ||||
- ||'''add_d'''  ||||   || 5. with file change - resolve: 
merge<>6. with move history - resolve: merge<>7. resolve: replace<> 
8. resolve: replace and merge<>9. with file change - resolve: replace|| 
 ||  ||  ||||
+ ||'''add_d'''  ||||   ||3. resolve: replace<>4. 
resolve: replace and merge<>5. with file change - resolve: merge<>6. 
with move history - resolve: merge<>7. resolve: replace<> 8. resolve: 
replace and merge<>9. with file change - resolve: replace||  || 
 ||  ||||
  ||'''rm_f'''   ||||   ||   || 18. resolve: accept 
 ||  ||  ||||
  ||'''rm_d'''   ||||   ||   ||  || 
 ||  ||||
  ||'''mv_f'''   || 23. options ||   ||   ||  ||
  ||  ||||


[Subversion Wiki] Update of "TreeConflictTests" by StefanSperling

2017-01-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/TreeConflictTests?action=diff&rev1=14&rev2=15

Comment:
add new test 13 and 14

  === update ===
  
  ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   ||  || 
 || 15. resolve: text merge ||   ||
+ ||'''edit_f''' ||||   ||   || 13. resolve: 
ignore<>14. resolve: accept ||  || 15. resolve: text merge 
||   ||
  ||'''add_f'''  |||| 31: resolve: text merge ||   ||   
   ||  ||  ||||
  ||'''add_d'''  ||||   ||   ||  || 
 ||  ||||
  ||'''rm_f'''   ||||   ||   ||  || 
 ||  ||||


[Subversion Wiki] Update of "TreeConflictTests" by StefanSperling

2017-01-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/TreeConflictTests?action=diff&rev1=13&rev2=14

Comment:
Add new conflict-test --list output; update test numbering in table but don't 
add any new tests yet

  === merge ===
  
  ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   || 10. resolve: 
ignore<>11. resolve: accept<>24. incoming replace: options ||  || 
12. resolve: text merge<>20. resolve: merge with text conflict<>22. 
chained move - resolve: text merge<>27: resolve: text merge (prop 
conflict)<>28: resolve: text merge (with keywords) || 15. incoming move 
dir: options<>16. with local edit<>17. with local add<>23. with 
moved file ||
+ ||'''edit_f''' ||||   ||   || 10. resolve: 
ignore<>11. resolve: accept<>24. incoming replace: options ||  || 
12. resolve: text merge<>24. resolve: merge with text conflict<>22. 
chained move - resolve: text merge<>27: resolve: text merge (prop 
conflict)<>33: resolve: text merge (with keywords) || 17. incoming move 
dir: options<>18. with local edit<>19. with local add<>23. with 
moved file ||
  ||'''add_f'''  |||| 1. resolve: ignore<>2. resolve: text 
merge<>3. resolve: replace<>4. resolve: replace and merge ||   ||   
   ||  ||  ||||
  ||'''add_d'''  ||||   || 5. with file change - resolve: 
merge<>6. with move history - resolve: merge<>7. resolve: replace<> 
8. resolve: replace and merge<>9. with file change - resolve: replace|| 
 ||  ||  ||||
  ||'''rm_f'''   ||||   ||   || 18. resolve: accept 
 ||  ||  ||||
  ||'''rm_d'''   ||||   ||   ||  || 
 ||  ||||
- ||'''mv_f'''   || 21. options ||   ||   ||  ||
  ||  ||||
+ ||'''mv_f'''   || 23. options ||   ||   ||  ||
  ||  ||||
  ||'''mv_d^f''' ||||   ||   ||  || 
 ||  ||||
  
  === update ===
  
  ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   ||  || 
 || 13. resolve: text merge ||   ||
+ ||'''edit_f''' ||||   ||   ||  || 
 || 15. resolve: text merge ||   ||
- ||'''add_f'''  |||| 26: resolve: text merge ||   ||   
   ||  ||  ||||
+ ||'''add_f'''  |||| 31: resolve: text merge ||   ||   
   ||  ||  ||||
  ||'''add_d'''  ||||   ||   ||  || 
 ||  ||||
  ||'''rm_f'''   ||||   ||   ||  || 
 ||  ||||
  ||'''rm_d'''   ||||   ||   ||  || 
 ||  ||||
- ||'''mv_f'''   ||||   ||   ||  || 
 ||  || 25: resolve: move dir merge ||
+ ||'''mv_f'''   ||||   ||   ||  || 
 ||  || 32: resolve: move dir merge ||
  ||'''mv_d^f''' ||||   ||   ||  || 
 ||  ||||
  
  === switch ===
  
  ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   ||  || 
 || 14. resolve: text merge ||||
+ ||'''edit_f''' ||||   ||   ||  || 
 || 16. resolve: text merge ||||
  ||'''add_f'''  ||||   ||   ||  || 
 ||  ||||
  ||'''add_d'''  ||||   ||   ||  || 
 ||  ||||
  ||'''rm_f'''   ||||   ||   ||  || 
 ||  ||||
@@ -59, +59 @@

 7   merge incoming add dir replace
 8   merge incoming add dir replace and merge
 9   merge incoming add dir replace with file change
-   10   merge incoming delete ignore
+   10   merge incoming delete file ignore
-   11   merge incoming delete accept
+   11   merge incoming delete file accept
12   merge incoming move file text merge
+   13   update incoming dele

[Subversion Wiki] Update of "AuthzImprovements" by StefanFuhrmann

2016-12-21 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=18&rev2=19

  So, the full lookup without caching is as shown below.  For efficiency, the 
implementation will check the accumulated global rights calculated by the 
parser before performing a tree lookup. There are probably many cases where the 
result of any lookup can be predicted from those rights, and therefore the 
lookup itself, and even creation of the filtered tree, could be skipped 
entirely.
  {{{
  lookup(tree : ref to filtered-tree, path : string):
- state = init(tree)
+ state = init(tree)
- foreach segment in path
+ foreach segment in path
- if done(state)
+ if done(state)
- break;
+ break;
- state = step(state, segment)
+ state = step(state, segment)
- return state.rights
+ return state.rights
  }}}
  
  == Better Access Control ==


[Subversion Wiki] Update of "AuthzImprovements" by StefanFuhrmann

2016-12-21 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=17&rev2=18

  state.rights = access
  state.current = next
  }}}
- So, the full lookup without caching is as shown below.  For efficiency, we 
check the accumulated global rights calculated by the parser before performing 
a tree lookup. There are probably many cases where the result of any lookup can 
be predicted from those rights, and therefore the lookup itself, and even 
creation of the filtered tree, could be skipped entirely.
+ So, the full lookup without caching is as shown below.  For efficiency, the 
implementation will check the accumulated global rights calculated by the 
parser before performing a tree lookup. There are probably many cases where the 
result of any lookup can be predicted from those rights, and therefore the 
lookup itself, and even creation of the filtered tree, could be skipped 
entirely.
  {{{
  lookup(tree : ref to filtered-tree, path : string):
  state = init(tree)


[Subversion Wiki] Update of "AuthzImprovements" by StefanFuhrmann

2016-12-21 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=16&rev2=17

  state.rights = access
  state.current = next
  }}}
+ So, the full lookup without caching is as shown below.  For efficiency, we 
check the accumulated global rights calculated by the parser before performing 
a tree lookup. There are probably many cases where the result of any lookup can 
be predicted from those rights, and therefore the lookup itself, and even 
creation of the filtered tree, could be skipped entirely.
- So, the full lookup without caching is
- {{{#!wiki caution
- There is one step we should perform before the initial lookup: check the 
accumulated global rights calculated by the parser. There are probably many 
cases where the result of any lookup can be predicted from those rights, and 
therefore the lookup itself, and even creation of the filtered tree, could be 
skipped entirely (for the cost of a couple extra hash lookups in the worst 
case).
- }}}
  {{{
  lookup(tree : ref to filtered-tree, path : string):
  state = init(tree)
@@ -205, +202 @@

  
  == Better Access Control ==
  
- TODO
+ TODO after 1.10.
  
  = Implementation Notes =
  


[Subversion Wiki] Trivial Update of "TreeConflictTests" by JohanCorveleyn

2016-10-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by JohanCorveleyn:
https://wiki.apache.org/subversion/TreeConflictTests?action=diff&rev1=3&rev2=4

Comment:
Make the "incoming / local" indication in the top-left of the tables more clear

  
  === merge ===
  
- ||'''loc \ 
inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
+ ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
  ||'''edit_f''' ||||   ||   || 10. resolve: 
ignore<>11. resolve: accept<>24. incoming replace: options ||  || 
12. resolve: text merge<>20. {X} resolve: merge with text conflict<>22. 
chained move - resolve: text merge || 15. {X} incoming move dir: 
options<>16. with local edit<>17. with local add<>23. {X} with 
moved file ||
  ||'''add_f'''  |||| 1. resolve: ignore<>2. resolve: text 
merge<>3. resolve: replace<>4. resolve: replace and merge ||   ||   
   ||  ||  ||||
  ||'''add_d'''  ||||   || 5. with file change - resolve: 
merge<>6. with move history - resolve: merge<>7. resolve: replace<> 
8. {X} resolve: replace and merge<>9. with file change - resolve: replace   
 ||  ||  ||  ||||
@@ -25, +25 @@

  
  === update ===
  
- ||'''loc \ 
inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
+ ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
  ||'''edit_f''' ||||   ||   ||  || 
 || 13. resolve: text merge ||||
  ||'''add_f'''  ||||   ||   ||  || 
 ||  ||||
  ||'''add_d'''  ||||   ||   ||  || 
 ||  ||||
@@ -36, +36 @@

  
  === switch ===
  
- ||'''loc \ 
inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
+ ||'''incoming><>local 
\/'''||<^>'''edit_f'''||<^>'''add_f'''||<^>'''add_d'''||<^>'''rm_f'''||<^>'''rm_d'''||<^>'''mv_f'''||<^>'''mv_d^f'''||
  ||'''edit_f''' ||||   ||   ||  || 
 || 14. resolve: text merge ||||
  ||'''add_f'''  ||||   ||   ||  || 
 ||  ||||
  ||'''add_d'''  ||||   ||   ||  || 
 ||  ||||


[Subversion Wiki] Update of "TreeConflictTests" by JohanCorveleyn

2016-10-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by JohanCorveleyn:
https://wiki.apache.org/subversion/TreeConflictTests?action=diff&rev1=2&rev2=3

Comment:
Update to current test list, and use icons for the XFail tests

  
  Below you can find, per "operation", a matrix of tree conflict tests, so we 
have an idea of how much work is still left to increase test coverage. The 
matrix row headers give the "local" situation, the column headers the "incoming 
change". These are only meant to be broad categories, an actual test may build 
up a very complex situation (but still be part of a certain category). The 
categories might need to be extended.
  
- The numbers refer to the test numbers. An (X) indicates an XFail test.
+ The numbers refer to the test numbers. An {X} indicates an XFail test.
  
  TODO:
-  * Add some short test summary with each test number (directly in the cell, 
or linked to a footnote?). While we're at it, make it possible to add 
additional comments.
+  * Make it possible to add additional comments related to specific tests (as 
a footnote?).
   * Extend the matrices with extra categories. For instance, for "merge" I'm 
thinking of using "add_f,edit_f" to indicate "f was added on the branch 
(anything before the comma) and locally edited (anything behind the comma)". In 
that case ",add_f" would be "branch is in sync, but has added f as a local 
uncommitted change"
   * Create "cherrypick" as a specific "operation" with its own matrix? Here we 
could also create additional categories for incoming, to discern between what 
happened on trunk before the cherrypick-rev, and what's part of the 
cherrypick-rev ("mv_f,edit_f" then means: file was moved on trunk, and edited, 
and only the edit is cherrypick-merged).
   * Create a script that can parse our C (and python?) tests, or their --list 
output. To help the script we could add some sort of tagging to our tests (in 
the test description), so it knows to what part of what matrix the test 
belongs. For instance: "[add_f-add_f] incoming add file ignore".
  
  === merge ===
  
- ||'''local \ 
incom'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
+ ||'''loc \ 
inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   || 15. resolve: 
ignore<>16. resolve: accept<>29. incoming replace: options ||  || 
17. resolve: text merge<>25. resolve: merge with text conflict (X)<>27. 
chained move - resolve: text merge || 20. incoming move dir: options 
(X)<>21. with local edit<>22. with local add<>28. with moved file 
(X) ||
+ ||'''edit_f''' ||||   ||   || 10. resolve: 
ignore<>11. resolve: accept<>24. incoming replace: options ||  || 
12. resolve: text merge<>20. {X} resolve: merge with text conflict<>22. 
chained move - resolve: text merge || 15. {X} incoming move dir: 
options<>16. with local edit<>17. with local add<>23. {X} with 
moved file ||
  ||'''add_f'''  |||| 1. resolve: ignore<>2. resolve: text 
merge<>3. resolve: replace<>4. resolve: replace and merge ||   ||   
   ||  ||  ||||
- ||'''add_d'''  ||||   || 8. resolve: ignore<>9. 
resolve: merge<>10. with file change - resolve: merge<>11. with move 
history - resolve: merge<>12. resolve: replace<>13. resolve: replace 
and merge (X)<>14. with file change - resolve: replace||  ||  
||  ||||
+ ||'''add_d'''  ||||   || 5. with file change - resolve: 
merge<>6. with move history - resolve: merge<>7. resolve: replace<> 
8. {X} resolve: replace and merge<>9. with file change - resolve: replace   
 ||  ||  ||  ||||
- ||'''rm_f'''   ||||   ||   || 23. resolve: accept 
 ||  ||  ||||
+ ||'''rm_f'''   ||||   ||   || 18. resolve: accept 
 ||  ||  ||||
  ||'''rm_d'''   ||||   ||   ||  || 
 ||  ||||
- ||'''mv_f'''   || 26. options (X)   ||   ||   ||  
||  ||  ||||
+ ||'''mv_f'''   || 21. {X} options ||   ||   ||  ||
  ||  ||||
  ||'''mv_d^f''' ||||   ||   ||  || 
 ||  ||||
  
  === update ===
  
- ||'''local \ 
incom'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
+ ||'''loc \ 
inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   ||  || 
 || 18. resolve: text merge   ||||
+ ||'''edit_f'''

[Subversion Wiki] Update of "TreeConflictTests" by JohanCorveleyn

2016-10-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by JohanCorveleyn:
https://wiki.apache.org/subversion/TreeConflictTests?action=diff&rev1=1&rev2=2

Comment:
Add short summary of tests in the table cells

  
  Below you can find, per "operation", a matrix of tree conflict tests, so we 
have an idea of how much work is still left to increase test coverage. The 
matrix row headers give the "local" situation, the column headers the "incoming 
change". These are only meant to be broad categories, an actual test may build 
up a very complex situation (but still be part of a certain category). The 
categories might need to be extended.
  
- The numbers refer to the test numbers. An X indicates an XFail test.
+ The numbers refer to the test numbers. An (X) indicates an XFail test.
  
  TODO:
   * Add some short test summary with each test number (directly in the cell, 
or linked to a footnote?). While we're at it, make it possible to add 
additional comments.
@@ -14, +14 @@

  
  === merge ===
  
- 
||'''loc\inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
+ ||'''local \ 
incom'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   || 15<>16<>29 
||  || 17<>25 X<>27 || 20 X<>21<>22<>28 X ||
- ||'''add_f'''  |||| 1<>2<>3<>4 ||   ||  ||
  ||  ||||
- ||'''add_d'''  ||||   || 
8<>9<>10<>11<>12<>13 X<>14||  ||  ||  
||||
+ ||'''edit_f''' ||||   ||   || 15. resolve: 
ignore<>16. resolve: accept<>29. incoming replace: options ||  || 
17. resolve: text merge<>25. resolve: merge with text conflict (X)<>27. 
chained move - resolve: text merge || 20. incoming move dir: options 
(X)<>21. with local edit<>22. with local add<>28. with moved file 
(X) ||
+ ||'''add_f'''  |||| 1. resolve: ignore<>2. resolve: text 
merge<>3. resolve: replace<>4. resolve: replace and merge ||   ||   
   ||  ||  ||||
+ ||'''add_d'''  ||||   || 8. resolve: ignore<>9. 
resolve: merge<>10. with file change - resolve: merge<>11. with move 
history - resolve: merge<>12. resolve: replace<>13. resolve: replace 
and merge (X)<>14. with file change - resolve: replace||  ||  
||  ||||
- ||'''rm_f'''   ||||   ||   || 23   || 
 ||  ||||
+ ||'''rm_f'''   ||||   ||   || 23. resolve: accept 
 ||  ||  ||||
  ||'''rm_d'''   ||||   ||   ||  || 
 ||  ||||
- ||'''mv_f'''   || 26 X   ||   ||   ||  || 
 ||  ||||
+ ||'''mv_f'''   || 26. options (X)   ||   ||   ||  
||  ||  ||||
  ||'''mv_d^f''' ||||   ||   ||  || 
 ||  ||||
  
  === update ===
  
- 
||'''loc\inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
+ ||'''local \ 
incom'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   ||  || 
 || 18   ||||
+ ||'''edit_f''' ||||   ||   ||  || 
 || 18. resolve: text merge   ||||
- ||'''add_f'''  |||| 5<>6  ||   ||  || 
 ||  ||||
+ ||'''add_f'''  |||| 5. resolve: ignore<>6. resolve: replace  
||   ||  ||  ||  ||||
  ||'''add_d'''  ||||   ||   ||  || 
 ||  ||||
  ||'''rm_f'''   ||||   ||   ||  || 
 ||  ||||
  ||'''rm_d'''   ||||   ||   ||  || 
 ||  ||||
@@ -36, +36 @@

  
  === switch ===
  
- 
||'''loc\inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
+ ||'''local \ 
incom'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
- ||'''edit_f''' ||||   ||   ||  || 
 || 19   ||||
+ ||'''edit_f''' ||||   ||   ||  || 
 || 19. resolve: text merge ||||
- ||'''add_f'''  |||| 7 ||   ||  || 
 ||  ||||
+ ||'''add_f'''  |||| 7. resolve: ignore ||   ||  
||  || 

[Subversion Wiki] Update of "TreeConflictTests" by JohanCorveleyn

2016-10-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "TreeConflictTests" page has been changed by JohanCorveleyn:
https://wiki.apache.org/subversion/TreeConflictTests

Comment:
Initial draft, matrices filled with test numbers from current conflicts-test.c

New page:
= Tree Conflict Tests =

Below you can find, per "operation", a matrix of tree conflict tests, so we 
have an idea of how much work is still left to increase test coverage. The 
matrix row headers give the "local" situation, the column headers the "incoming 
change". These are only meant to be broad categories, an actual test may build 
up a very complex situation (but still be part of a certain category). The 
categories might need to be extended.

The numbers refer to the test numbers. An X indicates an XFail test.

TODO:
 * Add some short test summary with each test number (directly in the cell, or 
linked to a footnote?). While we're at it, make it possible to add additional 
comments.
 * Extend the matrices with extra categories. For instance, for "merge" I'm 
thinking of using "add_f,edit_f" to indicate "f was added on the branch 
(anything before the comma) and locally edited (anything behind the comma)". In 
that case ",add_f" would be "branch is in sync, but has added f as a local 
uncommitted change"
 * Create "cherrypick" as a specific "operation" with its own matrix? Here we 
could also create additional categories for incoming, to discern between what 
happened on trunk before the cherrypick-rev, and what's part of the 
cherrypick-rev ("mv_f,edit_f" then means: file was moved on trunk, and edited, 
and only the edit is cherrypick-merged).
 * Create a script that can parse our C (and python?) tests, or their --list 
output. To help the script we could add some sort of tagging to our tests (in 
the test description), so it knows to what part of what matrix the test 
belongs. For instance: "[add_f-add_f] incoming add file ignore".

=== merge ===

||'''loc\inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
||'''edit_f''' ||||   ||   || 15<>16<>29 || 
 || 17<>25 X<>27 || 20 X<>21<>22<>28 X ||
||'''add_f'''  |||| 1<>2<>3<>4 ||   ||  ||  
||  ||||
||'''add_d'''  ||||   || 
8<>9<>10<>11<>12<>13 X<>14||  ||  ||  
||||
||'''rm_f'''   ||||   ||   || 23   ||  
||  ||||
||'''rm_d'''   ||||   ||   ||  ||  
||  ||||
||'''mv_f'''   || 26 X   ||   ||   ||  ||  
||  ||||
||'''mv_d^f''' ||||   ||   ||  ||  
||  ||||

=== update ===

||'''loc\inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
||'''edit_f''' ||||   ||   ||  ||  
|| 18   ||||
||'''add_f'''  |||| 5<>6  ||   ||  ||  
||  ||||
||'''add_d'''  ||||   ||   ||  ||  
||  ||||
||'''rm_f'''   ||||   ||   ||  ||  
||  ||||
||'''rm_d'''   ||||   ||   ||  ||  
||  ||||
||'''mv_f'''   ||||   ||   ||  ||  
||  ||||
||'''mv_d^f''' ||||   ||   ||  ||  
||  ||||

=== switch ===

||'''loc\inc'''||'''edit_f'''||'''add_f'''||'''add_d'''||'''rm_f'''||'''rm_d'''||'''mv_f'''||'''mv_d^f'''||
||'''edit_f''' ||||   ||   ||  ||  
|| 19   ||||
||'''add_f'''  |||| 7 ||   ||  ||  
||  ||||
||'''add_d'''  ||||   ||   ||  ||  
||  ||||
||'''rm_f'''   ||||   ||   ||  ||  
||  ||||
||'''rm_d'''   ||||   ||   ||  ||  
||  ||||
||'''mv_f'''   ||||   ||   ||  ||  
||  ||||
||'''mv_d^f''' ||||   ||   ||  ||  
||  ||||


[Subversion Wiki] Update of "ManyHands" by JohanCorveleyn

2016-10-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "ManyHands" page has been changed by JohanCorveleyn:
https://wiki.apache.org/subversion/ManyHands?action=diff&rev1=5&rev2=6

Comment:
Add a page to start organizing tree conflict tests

   * ...
  
  == Tasks ==
+  * TreeConflictTests - Organizing tree conflict tests
   * Svn18ApiReview - Subversion 1.8 new API review
   * Svn18Changes - Populating the Subversion 1.8.0 CHANGES file
- 
   * Svn19ApiReview - Subversion 1.9 new API review
  


[Subversion Wiki] Update of "ContributorsGroup" by JohanCorveleyn

2016-10-11 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "ContributorsGroup" page has been changed by JohanCorveleyn:
https://wiki.apache.org/subversion/ContributorsGroup?action=diff&rev1=17&rev2=18

  #acl AdminGroup:read,write,admin,revert,delete All:read
  '''Contributors''' with permission to edit the Subversion wiki – read, write, 
delete and revert pages or individual changes. To be added to this group, 
please send a brief request to the dev.at.subversion-dot-apache-dot-org mailing 
list including your wiki username. No mailing list subscription required.
  
- Related: [[AdminGroup| Administrators]] with permission to grant privileges 
to Contributors, in addition to being Contributors themselves.
+ Related: [[AdminGroup|Administrators]] with permission to grant privileges to 
Contributors, in addition to being Contributors themselves.
  
   * AdminGroup
   * GregStein
@@ -18, +18 @@

   * MichaelDiers
   * IvanZhakov
   * LievenGovaerts
+  * JohanCorveleyn
  


[Subversion Wiki] Update of "ResolvingIncomingMoves" by StefanSperling

2016-09-16 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "ResolvingIncomingMoves" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/ResolvingIncomingMoves?action=diff&rev1=3&rev2=4

Comment:
typos; discuss a native way of handling the merge operation case

  The conflict resolver scans the revision log to match up copies and deletions.
  See 'struct repos_move_info' and 'find_moves_in_revision()' in the file
  subversion/libsvn_client/conflicts.c. While this approach is not perfect
- (it does not corrrectly handle deletions which happened inside copies,
+ (it does not correctly handle deletions which happened inside copies,
  for instance) it is good enough to support users during conflict resolution
  in many use cases.
  
@@ -23, +23 @@

  
  with a locally modified file A/f.
  
- After A is moved to B in the repostory the user updates to the HEAD
+ After A is moved to B in the repository the user updates to the HEAD
  revision. The NODES table will now look as follows:
  
  || op_depth || local_relpath || presence ||
@@ -243, +243 @@

  
  With changes from the trunk merged in.
  
+ This could be achieved by first reverting B, then moving A to B locally,
+ and running the appropriate merges to get changes from trunk.
+ However, the resolver has no way of knowing whether reverting B would
+ destroy any local changes the user made to B after the merge.
+ Ideally, such changes would be retained.
+ 


[Subversion Wiki] Update of "ResolvingIncomingMoves" by StefanSperling

2016-09-16 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "ResolvingIncomingMoves" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/ResolvingIncomingMoves?action=diff&rev1=2&rev2=3

Comment:
fix merge source url

+ 
  = How the conflict resolver deals with incoming moves =
  
  An incoming move during an update/switch/merge operation appears
@@ -198, +199 @@

  at the BASE revision of A as the changed tree.
  Any nodes which have changed since rYCA trigger edits in the B subtree.
  This can be implemented by running the equivalent of a standard merge
- -rYCA:BASE ^/A@BASE into B.
+ -rYCA:BASE ^/branch/A@BASE into B.
  
  This results in:
  


[Subversion Wiki] Update of "ResolvingIncomingMoves" by StefanSperling

2016-09-16 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "ResolvingIncomingMoves" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/ResolvingIncomingMoves?action=diff&rev1=1&rev2=2

Comment:
fix formatting errors

  B/n (local add vs incoming add) and B/d (local move vs incoming deletion)
  in the ACTUAL_NODE table. This raises several new problems:
  
- * The meaning of the terms 'local' and 'incoming' in conflict descriptions
+ The meaning of the terms 'local' and 'incoming' in conflict descriptions
-   is now misleading because both of the conflicting tree changes were made
+ is now misleading because both of the conflicting tree changes were made
-   in the working copy ('local').
+ in the working copy ('local').
  
- * The resolver will have to be taught to resolve such conflicts (this is
+ The resolver will have to be taught to resolve such conflicts (this is
-   not impossible but implies extra implementation effort).
+ not impossible but implies extra implementation effort).
  
- * The resolver will have to choose whether the existing node in B should
+ The resolver will have to choose whether the existing node in B should
-   be left as-is, or whether it should be replaced with the node from A.
+ be left as-is, or whether it should be replaced with the node from A.
-   Either way, information is lost unless the rows for conflicting nodes
+ Either way, information is lost unless the rows for conflicting nodes
-   are left unmodified in both A and B.
+ are left unmodified in both A and B.
  
  The resolver could also reject conflict resolution if local changes are
  present in the B tree. However, this approach would work only for updates


[Subversion Wiki] Update of "DesignNotes" by StefanSperling

2016-09-16 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "DesignNotes" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/DesignNotes?action=diff&rev1=41&rev2=42

  The following are links to various notes about the design and implementation 
of various Subversion features and enhancements.
  
   * LocalMoves - functional design for client-side move and rename tracking
+ 
+  * ResolvingIncomingMoves - notes about resolving incoming moves with the new 
conflict resolver
  
   * [[Ev2|Editor, version 2 (Ev2)]] - Updating the way we transmit difference 
within Subversion
  


[Subversion Wiki] Update of "ResolvingIncomingMoves" by StefanSperling

2016-09-16 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "ResolvingIncomingMoves" page has been changed by StefanSperling:
https://wiki.apache.org/subversion/ResolvingIncomingMoves

Comment:
Initial notes on how the resolver can deal with incoming moves

New page:
= How the conflict resolver deals with incoming moves =

An incoming move during an update/switch/merge operation appears
as disjoint additions and deletions of working copy nodes.

The conflict resolver scans the revision log to match up copies and deletions.
See 'struct repos_move_info' and 'find_moves_in_revision()' in the file
subversion/libsvn_client/conflicts.c. While this approach is not perfect
(it does not corrrectly handle deletions which happened inside copies,
for instance) it is good enough to support users during conflict resolution
in many use cases.

== Incoming move during updates ==

Consider the following pre-update NODES table:

|| op_depth || local_relpath || presence ||
||0 ||A  || normal   ||
||0 ||A/f|| normal   ||

with a locally modified file A/f.

After A is moved to B in the repostory the user updates to the HEAD
revision. The NODES table will now look as follows:

|| op_depth || local_relpath || presence ||
||0 ||B  || normal   ||
||0 ||B/f|| normal   ||
||1 ||A  || normal   ||
||1 ||A/f|| normal   ||

The copy op-root A was created when a local edit vs incoming delete
tree conflict was raised on A. This is how the update process attempts
to preserve the user's local changes. The conflict resolver relies on
this behaviour.

The ACTUAL_NODE table now stores a tree conflict on A (the conflict
skel shown here is heavily abbreviated):

|| local_relpath || tree_conflict_data ||
||A  || ((update ((trunk/A 2 dir) (trunk/A 3 none))) ((tree () 
edited deleted))) ||

The resolver scans the revision log and determines that A was moved to B.
Merging the incoming move involves merging all changes within conflict
victim A into the newly added subtree B.

In our simple example, this means running a 3-way merge of the files
pristine(A/f), A/f, and B/f, into B/f. Afterwards, the rows for A can be
deleted from the NODES table and the conflict skel for A can be removed:

|| op_depth || local_relpath || presence ||
||0 ||B  || normal   ||
||0 ||B/f|| normal   ||

Things get more interesting if local changes are present in the NODES
table before the update, such as an added file n and a deleted file d:

|| op_depth || local_relpath || presence ||
||0 ||A  || normal   ||
||0 ||A/f|| normal   ||
||0 ||A/d|| normal   ||
||2 ||A/n|| normal   ||
||2 ||A/d|| base-deleted ||

The post-update state is:

|| op_depth || local_relpath || presence ||
||0 ||B  || normal   ||
||0 ||B/f|| normal   ||
||0 ||B/d|| normal   ||
||1 ||A  || normal   ||
||1 ||A/f|| normal   ||
||1 ||A/d|| normal   ||
||2 ||A/n|| normal   ||
||2 ||A/d|| base-deleted ||

Merging the incoming move involves moving all changes within
conflict victim A into the newly added subtree B and removing
the rows for A.

This operation must be performed by an editor which edits the B subtree.
It refers to the A subtree at op_depth 1 (actually relpath_depth('A')) as
the base tree, and to the A subtree at op_depth > 1 as the changed tree.
Any nodes at op_depth > 1 trigger corresponding edits in the B subtree.

The result of this edit should be:

|| op_depth || local_relpath || presence ||
||0 ||B  || normal   ||
||0 ||B/f|| normal   ||
||0 ||B/d|| normal   ||
||2 ||B/n|| normal   ||
||2 ||B/d|| base-deleted ||

File contents within A from the pristine store are part of the editor's
base tree, while the working files within A on disk are part of the
changed tree. This results in the previously discussed 3-way merge of
pristine(A/f), A/f, and B/f, into B/f.

Any nodes within the B subtree at op-depths > 1 trigger a tree conflict.
Suppose the user adds 'B/n' and moves 'B/d' to 'B/c' before running
the conflict resolver:

|| op_depth || local_relpath || presence || moved_to || moved_here ||
||0 ||B  || normal   ||  ||||
||0 ||B/f|| normal   ||  ||||
||0 ||B/d|| normal   ||  ||||
||2 ||B/n|| normal   ||  ||||
||2 ||B/d|| base-deleted || B/c  

[Subversion Wiki] Update of "JulianFoad" by JulianFoad

2016-02-24 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "JulianFoad" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/JulianFoad?action=diff&rev1=12&rev2=13

Comment:
I'm no longer working at WANdisco.

  #language en
  = Julian Foad =
  A developer of [[http://subversion.apache.org|Apache Subversion]]
- 
- A Senior Subversion Committer at [[http://www.wandisco.com|WANdisco, Inc.]] 
the maker of [[http://www.ubersvn.com|uberSVN]]
  
  A member of the [[http://apache.org|Apache Software Foundation]]
  


[Subversion Wiki] New attachment added to page Berlin2015

2015-10-04 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page "Berlin2015" for change notification. An 
attachment has been added to that page by StefanFuhrmann. Following detailed 
information is available:

Attachment name: todo-list.JPG
Attachment size: 197356
Attachment link: 
https://wiki.apache.org/subversion/Berlin2015?action=AttachFile&do=get&target=todo-list.JPG
Page link: https://wiki.apache.org/subversion/Berlin2015


[Subversion Wiki] New attachment added to page Berlin2015

2015-10-04 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page "Berlin2015" for change notification. An 
attachment has been added to that page by StefanFuhrmann. Following detailed 
information is available:

Attachment name: pipelining.JPG
Attachment size: 102320
Attachment link: 
https://wiki.apache.org/subversion/Berlin2015?action=AttachFile&do=get&target=pipelining.JPG
Page link: https://wiki.apache.org/subversion/Berlin2015


[Subversion Wiki] New attachment added to page Berlin2015

2015-10-04 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page "Berlin2015" for change notification. An 
attachment has been added to that page by StefanFuhrmann. Following detailed 
information is available:

Attachment name: node-API.JPG
Attachment size: 105937
Attachment link: 
https://wiki.apache.org/subversion/Berlin2015?action=AttachFile&do=get&target=node-API.JPG
Page link: https://wiki.apache.org/subversion/Berlin2015


[Subversion Wiki] New attachment added to page Berlin2015

2015-10-04 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page "Berlin2015" for change notification. An 
attachment has been added to that page by StefanFuhrmann. Following detailed 
information is available:

Attachment name: log-traversal.JPG
Attachment size: 102992
Attachment link: 
https://wiki.apache.org/subversion/Berlin2015?action=AttachFile&do=get&target=log-traversal.JPG
Page link: https://wiki.apache.org/subversion/Berlin2015


[Subversion Wiki] New attachment added to page Berlin2015

2015-10-04 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page "Berlin2015" for change notification. An 
attachment has been added to that page by StefanFuhrmann. Following detailed 
information is available:

Attachment name: fsfs-deltification.JPG
Attachment size: 129575
Attachment link: 
https://wiki.apache.org/subversion/Berlin2015?action=AttachFile&do=get&target=fsfs-deltification.JPG
Page link: https://wiki.apache.org/subversion/Berlin2015


[Subversion Wiki] Update of "Berlin2015" by StefanFuhrmann

2015-10-04 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Berlin2015" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/Berlin2015

New page:
The Berlin '15 hackathon was held at the elego offices in Berlin, Germany from 
14^th^ to 18^th^ September. elego has generously donated office space and 
`$BEVERAGE` for the duration of the week, and several committers were on hand 
to hack, discuss, and made themselves merry.

== Whiteboard Contents ==
 * [[attachment:fsfs-deltification.JPG|Deltification causing random I/O]]
 * [[attachment:pipelining.JPG|Concurrent put and commit pipelining]]
 * [[attachment:fsfs-deltification.JPG|Log traversal]]
 * [[attachment:todo-list.JPG|TODO list]]
 * [[attachment:node-API.JPG|FS node API]]


[Subversion Wiki] Update of "Svn19ApiReview" by StefanFuhrmann

2015-04-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=20&rev2=21

Comment:
Update after resolution of the last non-doc issues.

  
  
  == Reviewed But Need Further Attention ==
- === svn_dirent_uri.h ===
-  * `svn_relpath_limit` — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
`svn_relpath__first_n_components`.
- 
  === svn_ra_svn.h ===
   * `svn_ra_svn_create_conn4` — The @note is unclear. Is the file being used 
for time-out detection?
  
  === svn_wc.h ===
   * `svn_wc_notify_move_broken` — Has a TODO left-over from 1.8
   * `svn_wc_conflict_description2_t.merged_file` — Clarify the ###.
-  * `svn_wc__conflict_description2_dup` — Simply remove from API.
  
  
  == Review Completed! ==
@@ -29, +25 @@

   . svn_fs.h
   . svn_repos.h
   . svn_types.h
+  . svn_dirent_uri.h
  
  These headers have been reviewed by stefan2 and where issues have been found, 
they are already fixed.  More review is welcome.
  


[Subversion Wiki] Update of "Svn19ApiReview" by StefanFuhrmann

2015-03-31 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=18&rev2=19

Comment:
svn_types is done as well now

* Comment still applies. — JAF
   * `svn_repos_get_fs_build_parser5` — Handling of / behavior if 
`use_history==FALSE`?
  
- === svn_types.h ===
-  * `svn_null_pointer_constant_stdarg_sentinel_t` — Should this be private?
-   * No; the idea is that API users can use `SVN_VA_NULL`. Note that the 
definition is a forward declaration of the type for the purpose of making it a 
pointer constant that's not trivially assignable to anything else (except 
`void*`), but the type itself is never defined, on purpose. — brane
- 
  === svn_wc.h ===
   * `svn_wc_notify_move_broken` — Has a TODO left-over from 1.8
   * `svn_wc_conflict_description2_t.merged_file` — Clarify the ###.
@@ -43, +39 @@

   . svn_client.h
   . svn_diff.h
   . svn_fs.h
+  . svn_types.h
  
  These headers have been reviewed by stefan2 and where issues have been found, 
they are already fixed.  More review is welcome.
  


[Subversion Wiki] Update of "Svn19ApiReview" by StefanFuhrmann

2015-03-31 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=17&rev2=18

Comment:
Remove a few svn_repos entries that have been resolved.

  
  === svn_repos.h ===
   * `svn_repos_notify_warning_t` — Maybe change docstring: "... type of 
''warning'' ''triggered'' ..."?
-  * `svn_repos_fs_lock_many` — Lock error handling in case of 
`lock_callback==NULL`? What is the error return on pre-lock hook failure?Doc 
updated.
-  * `svn_repos_fs_unlock_many` — Lock error handling in case of 
`lock_callback==NULL`? Error return on pre-unlock hook failure? Doc updated. 
Why are the paths for callbacks allocated in `result_pool`?The paths are part 
of the "result" passed to the callback, just like the lock and path in the 
svn_fs_lock_many.
   * `svn_repos_parse_dumpstream3` — [JAF] Comment.
* Comment still applies. — JAF
   * `svn_repos_get_fs_build_parser5` — Handling of / behavior if 
`use_history==FALSE`?


[Subversion Wiki] Update of "Svn19ApiReview" by StefanFuhrmann

2015-03-31 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=16&rev2=17

Comment:
Various headers have been completed.

  
  
  == Reviewed But Need Further Attention ==
- === svn_client.h ===
- New functions:
- 
-  * `svn_client_vacuum` — Missing documentation for arguments 
`fix_recorded_timestamps` and `vacuum_pristines`. (svn praise: r1548088 
rhuijben)
- 
- === svn_diff.h ===
-  * `svn_diff_output2`
-  * `svn_diff_file_output_unified4`
-  * `svn_diff_output_binary`
-  * `svn_diff_file_output_merge3`
-  * `svn_diff_mem_string_output_unified3`
-  * `svn_diff_mem_string_output_merge3` — Document the optional cancel_func & 
cancel_baton. It may be helpful to tell when they will be invoked (once per 
file / hunk?).
- 
  === svn_dirent_uri.h ===
   * `svn_relpath_limit` — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
`svn_relpath__first_n_components`.
- 
- === svn_fs.h ===
-  * `svn_fs_commit_txn` — Is the `SVN_FS_TXN_CLIENT_DATE` behavior still as 
described? Yes. Do we want to mention here that this is a 1.9 extension? 
SVN_FS_TXN_CLIENT_DATE is marked new in 1.9.
-  * `svn_fs_lock_target_create` — `pool` parameter: Is this a `result_pool` or 
should it even become 2 pools?Renamed result_pool.
-  * `svn_fs_lock_callback_t` — `pool` parameter: Maybe rename to 
`scratch_pool`. Renamed scratch_pool.
-  * `svn_fs_lock_many`, `svn_fs_unlock_many` — Mention in docstring that these 
are not atomic operations. If the callback returns an error, they simply return 
that error to their callers and leave part of the locks in their initial and 
the remainder in the final state. What is the lock error handling in case of 
`lock_callback==NULL`?Doc updated.
-  * `svn_fs_unlock_many` — What is the `result_pool` being used for? As for 
svn_fs_lock_many, it it used to allocate the result data passed to the callback.
  
  === svn_ra_svn.h ===
   * `svn_ra_svn_create_conn4` — The @note is unclear. Is the file being used 
for time-out detection?
@@ -60, +40 @@

  
  
  == Review Completed! ==
+ All issues found so far have been resolved for these headers:
+ 
+  . svn_client.h
+  . svn_diff.h
+  . svn_fs.h
+ 
  These headers have been reviewed by stefan2 and where issues have been found, 
they are already fixed.  More review is welcome.
  
   . mod_dav_svn.h


[Subversion Wiki] Update of "Svn19ApiReview" by PhilipMartin

2015-03-30 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by PhilipMartin:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=15&rev2=16

   * `svn_fs_commit_txn` — Is the `SVN_FS_TXN_CLIENT_DATE` behavior still as 
described? Yes. Do we want to mention here that this is a 1.9 extension? 
SVN_FS_TXN_CLIENT_DATE is marked new in 1.9.
   * `svn_fs_lock_target_create` — `pool` parameter: Is this a `result_pool` or 
should it even become 2 pools?Renamed result_pool.
   * `svn_fs_lock_callback_t` — `pool` parameter: Maybe rename to 
`scratch_pool`. Renamed scratch_pool.
-  * `svn_fs_lock_many`, `svn_fs_unlock_many` — Mention in docstring that these 
are not atomic operations. If the callback returns an error, they simply return 
that error to their callers and leave part of the locks in their initial and 
the remainder in the final state. What is the lock error handling in case of 
`lock_callback==NULL`?
+  * `svn_fs_lock_many`, `svn_fs_unlock_many` — Mention in docstring that these 
are not atomic operations. If the callback returns an error, they simply return 
that error to their callers and leave part of the locks in their initial and 
the remainder in the final state. What is the lock error handling in case of 
`lock_callback==NULL`?Doc updated.
   * `svn_fs_unlock_many` — What is the `result_pool` being used for? As for 
svn_fs_lock_many, it it used to allocate the result data passed to the callback.
  
  === svn_ra_svn.h ===
@@ -37, +37 @@

  
  === svn_repos.h ===
   * `svn_repos_notify_warning_t` — Maybe change docstring: "... type of 
''warning'' ''triggered'' ..."?
-  * `svn_repos_fs_lock_many` — Lock error handling in case of 
`lock_callback==NULL`? What is the error return on pre-lock hook failure?
+  * `svn_repos_fs_lock_many` — Lock error handling in case of 
`lock_callback==NULL`? What is the error return on pre-lock hook failure?Doc 
updated.
-  * `svn_repos_fs_unlock_many` — Lock error handling in case of 
`lock_callback==NULL`? Error return on pre-unlock hook failure? Why are the 
paths for callbacks allocated in `result_pool`?
+  * `svn_repos_fs_unlock_many` — Lock error handling in case of 
`lock_callback==NULL`? Error return on pre-unlock hook failure? Doc updated. 
Why are the paths for callbacks allocated in `result_pool`?The paths are part 
of the "result" passed to the callback, just like the lock and path in the 
svn_fs_lock_many.
   * `svn_repos_parse_dumpstream3` — [JAF] Comment.
* Comment still applies. — JAF
   * `svn_repos_get_fs_build_parser5` — Handling of / behavior if 
`use_history==FALSE`?


[Subversion Wiki] Update of "Svn19ApiReview" by PhilipMartin

2015-03-30 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by PhilipMartin:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=14&rev2=15

   * `svn_relpath_limit` — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
`svn_relpath__first_n_components`.
  
  === svn_fs.h ===
-  * `svn_fs_commit_txn` — Is the `SVN_FS_TXN_CLIENT_DATE` behavior still as 
described? Do we want to mention here that this is a 1.9 extension?
+  * `svn_fs_commit_txn` — Is the `SVN_FS_TXN_CLIENT_DATE` behavior still as 
described? Yes. Do we want to mention here that this is a 1.9 extension? 
SVN_FS_TXN_CLIENT_DATE is marked new in 1.9.
-  * `svn_fs_lock_target_create` — `pool` parameter: Is this a `result_pool` or 
should it even become 2 pools?
+  * `svn_fs_lock_target_create` — `pool` parameter: Is this a `result_pool` or 
should it even become 2 pools?Renamed result_pool.
-  * `svn_fs_lock_callback_t` — `pool` parameter: Maybe rename to 
`scratch_pool`.
+  * `svn_fs_lock_callback_t` — `pool` parameter: Maybe rename to 
`scratch_pool`. Renamed scratch_pool.
   * `svn_fs_lock_many`, `svn_fs_unlock_many` — Mention in docstring that these 
are not atomic operations. If the callback returns an error, they simply return 
that error to their callers and leave part of the locks in their initial and 
the remainder in the final state. What is the lock error handling in case of 
`lock_callback==NULL`?
-  * `svn_fs_unlock_many` — What is the `result_pool` being used for?
+  * `svn_fs_unlock_many` — What is the `result_pool` being used for? As for 
svn_fs_lock_many, it it used to allocate the result data passed to the callback.
  
  === svn_ra_svn.h ===
   * `svn_ra_svn_create_conn4` — The @note is unclear. Is the file being used 
for time-out detection?


[Subversion Wiki] Update of "Svn19ApiReview" by StefanFuhrmann

2015-03-29 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=13&rev2=14

Comment:
Remove entries that got fixed recently.

  New functions:
  
   * `svn_client_vacuum` — Missing documentation for arguments 
`fix_recorded_timestamps` and `vacuum_pristines`. (svn praise: r1548088 
rhuijben)
-  * `svn_client_cleanup2` — Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`. (svn 
praise: r1548088 rhuijben)
-  * `svn_client_cleanup`  — Missing SVN_DEPRECATED annotation.
  
  === svn_diff.h ===
   * `svn_diff_output2`
@@ -29, +27 @@

  
  === svn_fs.h ===
   * `svn_fs_commit_txn` — Is the `SVN_FS_TXN_CLIENT_DATE` behavior still as 
described? Do we want to mention here that this is a 1.9 extension?
-  * `svn_fs_dir_optimal_order` — Should use 2 pools as its implementation 
creates temporary objects.
   * `svn_fs_lock_target_create` — `pool` parameter: Is this a `result_pool` or 
should it even become 2 pools?
   * `svn_fs_lock_callback_t` — `pool` parameter: Maybe rename to 
`scratch_pool`.
   * `svn_fs_lock_many`, `svn_fs_unlock_many` — Mention in docstring that these 
are not atomic operations. If the callback returns an error, they simply return 
that error to their callers and leave part of the locks in their initial and 
the remainder in the final state. What is the lock error handling in case of 
`lock_callback==NULL`?


[Subversion Wiki] Update of "Svn19ApiReview" by JulianFoad

2015-03-24 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=12&rev2=13

  
  
  == Needs Review ==
- 
  All public API headers have been reviewed at least once.
  
  
@@ -17, +16 @@

   * `svn_client_cleanup2` — Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`. (svn 
praise: r1548088 rhuijben)
   * `svn_client_cleanup`  — Missing SVN_DEPRECATED annotation.
  
- 
  === svn_diff.h ===
- 
   * `svn_diff_output2`
   * `svn_diff_file_output_unified4`
   * `svn_diff_output_binary`
@@ -39, +36 @@

   * `svn_fs_unlock_many` — What is the `result_pool` being used for?
  
  === svn_ra_svn.h ===
- 
   * `svn_ra_svn_create_conn4` — The @note is unclear. Is the file being used 
for time-out detection?
  
  === svn_repos.h ===
- 
   * `svn_repos_notify_warning_t` — Maybe change docstring: "... type of 
''warning'' ''triggered'' ..."?
   * `svn_repos_fs_lock_many` — Lock error handling in case of 
`lock_callback==NULL`? What is the error return on pre-lock hook failure?
   * `svn_repos_fs_unlock_many` — Lock error handling in case of 
`lock_callback==NULL`? Error return on pre-unlock hook failure? Why are the 
paths for callbacks allocated in `result_pool`?
   * `svn_repos_parse_dumpstream3` — [JAF] Comment.
+   * Comment still applies. — JAF
   * `svn_repos_get_fs_build_parser5` — Handling of / behavior if 
`use_history==FALSE`?
  
  === svn_types.h ===
   * `svn_null_pointer_constant_stdarg_sentinel_t` — Should this be private?
-* No; the idea is that API users can use `SVN_VA_NULL`. Note that the 
definition is a forward declaration of the type for the purpose of making it a 
pointer constant that's not trivially assignable to anything else (except 
`void*`), but the type itself is never defined, on purpose. — brane
+   * No; the idea is that API users can use `SVN_VA_NULL`. Note that the 
definition is a forward declaration of the type for the purpose of making it a 
pointer constant that's not trivially assignable to anything else (except 
`void*`), but the type itself is never defined, on purpose. — brane
- 
  
  === svn_wc.h ===
- 
   * `svn_wc_notify_move_broken` — Has a TODO left-over from 1.8
   * `svn_wc_conflict_description2_t.merged_file` — Clarify the ###.
   * `svn_wc_conflict_description_create_tree2` — What is that @c 
local_node_kind that is being mentioned _twice_?
@@ -69, +63 @@

  
  
  == Review Completed! ==
- 
  These headers have been reviewed by stefan2 and where issues have been found, 
they are already fixed.  More review is welcome.
  
   . mod_dav_svn.h
@@ -80, +73 @@

   . svn_mergeinfo.h
   . svn_ra.h
   . svn_string.h
-  . svn_version.h  
+  . svn_version.h
  
  The following 1.9 header contain only minor changes against 1.8.  Those 
changes seem to be o.k.  Reviewed by stefan2.
  


[Subversion Wiki] Update of "Svn19ApiReview" by StefanFuhrmann

2015-03-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=11&rev2=12

Comment:
First round of API review has been completed.

  
  == Needs Review ==
  
+ All public API headers have been reviewed at least once.
- The following 1.9 headers contain non-trivial changes against 1.8:
- 
-  . mod_dav_svn.h
-  . svn_cmdline.h
-  . svn_config.h
-  . svn_diff.h
-  . svn_error.h
-  . svn_io.h
-  . svn_mergeinfo.h
-  . svn_ra.h
-  . svn_ra_svn.h
-  . svn_string.h
-  . svn_version.h
-  . svn_wc.h
  
  
  == Reviewed But Need Further Attention ==
@@ -29, +16 @@

   * `svn_client_vacuum` — Missing documentation for arguments 
`fix_recorded_timestamps` and `vacuum_pristines`. (svn praise: r1548088 
rhuijben)
   * `svn_client_cleanup2` — Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`. (svn 
praise: r1548088 rhuijben)
   * `svn_client_cleanup`  — Missing SVN_DEPRECATED annotation.
+ 
+ 
+ === svn_diff.h ===
+ 
+  * `svn_diff_output2`
+  * `svn_diff_file_output_unified4`
+  * `svn_diff_output_binary`
+  * `svn_diff_file_output_merge3`
+  * `svn_diff_mem_string_output_unified3`
+  * `svn_diff_mem_string_output_merge3` — Document the optional cancel_func & 
cancel_baton. It may be helpful to tell when they will be invoked (once per 
file / hunk?).
  
  === svn_dirent_uri.h ===
   * `svn_relpath_limit` — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
`svn_relpath__first_n_components`.
@@ -40, +37 @@

   * `svn_fs_lock_callback_t` — `pool` parameter: Maybe rename to 
`scratch_pool`.
   * `svn_fs_lock_many`, `svn_fs_unlock_many` — Mention in docstring that these 
are not atomic operations. If the callback returns an error, they simply return 
that error to their callers and leave part of the locks in their initial and 
the remainder in the final state. What is the lock error handling in case of 
`lock_callback==NULL`?
   * `svn_fs_unlock_many` — What is the `result_pool` being used for?
+ 
+ === svn_ra_svn.h ===
+ 
+  * `svn_ra_svn_create_conn4` — The @note is unclear. Is the file being used 
for time-out detection?
  
  === svn_repos.h ===
  
@@ -53, +54 @@

   * `svn_null_pointer_constant_stdarg_sentinel_t` — Should this be private?
 * No; the idea is that API users can use `SVN_VA_NULL`. Note that the 
definition is a forward declaration of the type for the purpose of making it a 
pointer constant that's not trivially assignable to anything else (except 
`void*`), but the type itself is never defined, on purpose. — brane
  
+ 
+ === svn_wc.h ===
+ 
+  * `svn_wc_notify_move_broken` — Has a TODO left-over from 1.8
+  * `svn_wc_conflict_description2_t.merged_file` — Clarify the ###.
+  * `svn_wc_conflict_description_create_tree2` — What is that @c 
local_node_kind that is being mentioned _twice_?
+  * `svn_wc__conflict_description2_dup` — Simply remove from API.
+  * `svn_wc_conflict_choice_t.svn_wc_conflict_choose_undefined` — If truly 
internal, we might rename it to `svn_wc_conflict_choose__undefined`.
+  * `svn_wc_add_from_disk3` — Still has TODO and ###s. Document the 
notification callback (is it optional?)
+  * `svn_wc_add_from_disk2` — What is skip_som_prop_canon?
+  * `svn_wc_queue_committed4` — Various outstanding ###s.
+  * `svn_wc_cleanup4` — Document the notification callback (is it optional?)
+ 
  
  == Review Completed! ==
+ 
+ These headers have been reviewed by stefan2 and where issues have been found, 
they are already fixed.  More review is welcome.
+ 
+  . mod_dav_svn.h
+  . svn_cmdline.h
+  . svn_config.h
+  . svn_error.h
+  . svn_io.h
+  . svn_mergeinfo.h
+  . svn_ra.h
+  . svn_string.h
+  . svn_version.h  
  
  The following 1.9 header contain only minor changes against 1.8.  Those 
changes seem to be o.k.  Reviewed by stefan2.
  


[Subversion Wiki] Update of "Svn19ApiReview" by StefanFuhrmann

2015-03-18 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=10&rev2=11

Comment:
Add complete lists of reviewed and TODO headers

  
  
  == Needs Review ==
+ 
+ The following 1.9 headers contain non-trivial changes against 1.8:
+ 
+  . mod_dav_svn.h
+  . svn_cmdline.h
+  . svn_config.h
+  . svn_diff.h
+  . svn_error.h
+  . svn_io.h
+  . svn_mergeinfo.h
+  . svn_ra.h
+  . svn_ra_svn.h
+  . svn_string.h
+  . svn_version.h
+  . svn_wc.h
+ 
  
  == Reviewed But Need Further Attention ==
  === svn_client.h ===
@@ -15, +31 @@

   * `svn_client_cleanup`  — Missing SVN_DEPRECATED annotation.
  
  === svn_dirent_uri.h ===
-  * `svn_relpath_limit` — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
'svn_relpath__first_n_components'.
+  * `svn_relpath_limit` — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
`svn_relpath__first_n_components`.
  
  === svn_fs.h ===
   * `svn_fs_commit_txn` — Is the `SVN_FS_TXN_CLIENT_DATE` behavior still as 
described? Do we want to mention here that this is a 1.9 extension?
@@ -39, +55 @@

  
  
  == Review Completed! ==
- Nothing yet.
  
+ The following 1.9 header contain only minor changes against 1.8.  Those 
changes seem to be o.k.  Reviewed by stefan2.
+ 
+  . svn_auth.h
+  . svn_compat.h
+  . svn_cache_config.h
+  . svn_checksum.h
+  . svn_delta.h
+  . svn_error_codes.h
+  . svn_hash.h
+  . svn_iter.h
+  . svn_opt.h
+  . svn_path.h
+  . svn_sorts.h
+  . svn_xml.h
+ 


[Subversion Wiki] Update of "Svn19ApiReview" by StefanFuhrmann

2015-03-16 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=9&rev2=10

Comment:
Add issues found during the review of svn_fs.h and svn_repos.h.

  === svn_dirent_uri.h ===
   * `svn_relpath_limit` — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
'svn_relpath__first_n_components'.
  
+ === svn_fs.h ===
+  * `svn_fs_commit_txn` — Is the `SVN_FS_TXN_CLIENT_DATE` behavior still as 
described? Do we want to mention here that this is a 1.9 extension?
+  * `svn_fs_dir_optimal_order` — Should use 2 pools as its implementation 
creates temporary objects.
+  * `svn_fs_lock_target_create` — `pool` parameter: Is this a `result_pool` or 
should it even become 2 pools?
+  * `svn_fs_lock_callback_t` — `pool` parameter: Maybe rename to 
`scratch_pool`.
+  * `svn_fs_lock_many`, `svn_fs_unlock_many` — Mention in docstring that these 
are not atomic operations. If the callback returns an error, they simply return 
that error to their callers and leave part of the locks in their initial and 
the remainder in the final state. What is the lock error handling in case of 
`lock_callback==NULL`?
+  * `svn_fs_unlock_many` — What is the `result_pool` being used for?
+ 
+ === svn_repos.h ===
+ 
+  * `svn_repos_notify_warning_t` — Maybe change docstring: "... type of 
''warning'' ''triggered'' ..."?
+  * `svn_repos_fs_lock_many` — Lock error handling in case of 
`lock_callback==NULL`? What is the error return on pre-lock hook failure?
+  * `svn_repos_fs_unlock_many` — Lock error handling in case of 
`lock_callback==NULL`? Error return on pre-unlock hook failure? Why are the 
paths for callbacks allocated in `result_pool`?
+  * `svn_repos_parse_dumpstream3` — [JAF] Comment.
+  * `svn_repos_get_fs_build_parser5` — Handling of / behavior if 
`use_history==FALSE`?
+ 
  === svn_types.h ===
   * `svn_null_pointer_constant_stdarg_sentinel_t` — Should this be private?
 * No; the idea is that API users can use `SVN_VA_NULL`. Note that the 
definition is a forward declaration of the type for the purpose of making it a 
pointer constant that's not trivially assignable to anything else (except 
`void*`), but the type itself is never defined, on purpose. — brane


[Subversion Wiki] Update of "Inheritable-Ignores-AutoProps" by JulianFoad

2015-02-19 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Inheritable-Ignores-AutoProps" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Inheritable-Ignores-AutoProps?action=diff&rev1=16&rev2=17

Comment:
Correct the format of svn:global-ignores prop values -- issue #4380.

  Like the svn:ignore property it only makes sense to set svn:auto-props on 
directories, so attempts to propset the latter on a file will fail.
  
  === Ignores Format ===
- The values for the svn:global-ignores property are per the format of 
configuration defined global-ignores: A whitespace-delimited collection of file 
patterns.  Like svn:auto-props, the svn:global-ignores property can only be set 
on directories.
+ The values for the svn:global-ignores property are in the same format as the 
svn:ignore property: a newline-delimited collection of file 
patterns.<> Like svn:auto-props, the 
svn:global-ignores property can only be set on directories.
  
  === Auto-Props Hierarchy and Precedence ===
  Any path added to the working copy or imported to the repository must have a 
previously versioned parent. Both the svn:auto-props explicitly set on that 
parent and the properties inherited by that parent, in addition to the run-time 
configuration auto-props, will determine the auto-props for the added/imported 
files under the versioned parent.  Where the auto-prop values '''for the same 
file pattern''' conflict there are a few simple rules:


[Subversion Wiki] Update of "AuthzImprovements" by brane

2015-01-09 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by brane:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=12&rev2=13

  
  == Goals ==
  
- The current (1.9) implementation of authz is lacking in three areas:
+ The current (1.9) implementation of authz is lacking in two areas:
  
-  * Performance when a large number of paths needs to be checked.
-  Affected operations are mainly checkout / export and log.
+  1. Wildcard support and performance
+   * Performance when a large number of paths needs to be checked. Affected 
operations are mainly checkout / export and log.
  
-  * Support for wildcards. Subversion should support
+   * Support for wildcards. Subversion should support
-   * "*" for single (exactly one), arbitrary path segments (with no "/" in 
them) and
+* "*" for single (exactly one), arbitrary path segments (with no "/" in 
them) and
-   * "**" for arbitrary number (zero to infinite) of path segments.
+* "**" for arbitrary number (zero to infinite) of path segments.
-   * Classic wildcard patterns like "*foo*.bar", including escapement via the 
"\" prefix shall be supported.
+* Classic wildcard patterns like "*foo*.bar", including escapement via the 
"\" prefix shall be supported.
-   The asterisks in there match zero to many characters other than "/" making 
the whole segment form "/*/"
+The asterisks in there match zero to many characters other than "/" making 
the whole segment form "/*/" a mere special case of this.
+   All wildcard usage applies to full path segments only, i.e. a '*' never 
matches a '/' except for the case of "/**/" where it matches zero to many full 
segments. For example, "/*/**/*" will match any path that contains at least 2 
segments and is equivalent to "/**/*/*" as well as "/*/*/**".
-   a mere special case of this.
-  All wildcard usage applies to full path segments only, i.e. a '*'
-  never matches a '/' except for the case of "/**/" where it matches
-  zero to many full segments. For example, "/*/**/*" will match any path that 
contains at least 2 segments
-  and is equivalent to "/**/*/*" as well as "/*/*/**".
  
-  * The right to know about the existence of a node (a.k.a. lookup access 
rights and/or directory traversal rights) is implied by read access and cannot 
be manipulated separately. See 
[[http://subversion.tigris.org/issues/show_bug.cgi?id=3380|Issue 3380]] for 
previous discussion of this topic, and the 
[[http://svn.apache.org/repos/asf/subversion/branches/authz-overhaul/BRANCH-README|authz-overhaul
 branch]] for an attempt at implementing this distinction. 
[[http://mail-archives.apache.org/mod_mbox/subversion-dev/201411.mbox/%3C5478AAD4.3070306%40skynet.ie%3E|this
 thread]] on the dev@ mailing list is a recent example of the problems caused 
by implicit lookup access.
+  1. Better access control
+   * The right to know about the existence of a node (a.k.a. lookup access 
rights and/or directory traversal rights) is implied by read access and cannot 
be manipulated separately.
+* See [[http://subversion.tigris.org/issues/show_bug.cgi?id=3380|Issue 
3380]] for previous discussion of this topic;
+* the 
[[http://svn.apache.org/repos/asf/subversion/branches/authz-overhaul/BRANCH-README|authz-overhaul
 branch]] for an attempt at implementing this distinction.
+* 
[[http://mail-archives.apache.org/mod_mbox/subversion-dev/201411.mbox/%3C5478AAD4.3070306%40skynet.ie%3E|This
 thread]] on the dev@ mailing list is a recent example of the problems caused 
by implicit lookup access.
  
+ == Wildcard Support and Performance ==
+ 
- == Terminology ==
+ === Terminology ===
  
+ A '''path''' consists of '''segments''', separated by "/". Whildcards are 
valid segments and their interpretation depends on the context.
- A '''path''' consists of '''segments''', separated by "/".
- Whildcards are valid segments and their interpretation depends
- on the context.
  
+ A '''access control list (ACL)''' contains a number of '''access control 
elements (ACE)''', each describing which '''users''' shall have what '''access 
rights'''. Users might be specified indirectly by using '''groups'''.
- A '''access control list (ACL)''' contains a number of '''access control 
elements (ACE)''',
- each describing which '''users''' shall have what '''access rights'''. Users 
might be specified
- indirectly by using '''groups'''.
  
  A '''path rule''' specifies what ACL applies to a given path.
  
- 
- == Inheritance and disambiguation ==
+ === Inheritance and Disambiguation ===
  
+ These are the rules as of today, with rule 7 added to support ambiguous path 
patches caused by pattern matching.  Please note the difference between 
''matching'' (does a path fully match a given pattern?) and ''applying to'' 
(governing the access rights).
- These are the rules as of today, with rule 7 added to support
- ambiguous path patches

[Subversion Wiki] Update of "AuthzImprovements" by brane

2015-01-06 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by brane:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=11&rev2=12

  
  == Goals ==
  
- The current (1.9) implementation of authz is lacking in two areas:
+ The current (1.9) implementation of authz is lacking in three areas:
  
   * Performance when a large number of paths needs to be checked.
   Affected operations are mainly checkout / export and log.
@@ -20, +20 @@

   zero to many full segments. For example, "/*/**/*" will match any path that 
contains at least 2 segments
   and is equivalent to "/**/*/*" as well as "/*/*/**".
  
+  * The right to know about the existence of a node (a.k.a. lookup access 
rights and/or directory traversal rights) is implied by read access and cannot 
be manipulated separately. See 
[[http://subversion.tigris.org/issues/show_bug.cgi?id=3380|Issue 3380]] for 
previous discussion of this topic, and the 
[[http://svn.apache.org/repos/asf/subversion/branches/authz-overhaul/BRANCH-README|authz-overhaul
 branch]] for an attempt at implementing this distinction. 
[[http://mail-archives.apache.org/mod_mbox/subversion-dev/201411.mbox/%3C5478AAD4.3070306%40skynet.ie%3E|this
 thread]] on the dev@ mailing list is a recent example of the problems caused 
by implicit lookup access.
+ 
  == Terminology ==
  
  A '''path''' consists of '''segments''', separated by "/".
@@ -65, +67 @@

  
   9. If multiple ACEs of a given ACL apply to a user, the union of
   all individually granted access rights is granted.
- 
- {{{#!wiki caution 
- Suggest writing "union of ... rights" not "sum of ... rights" to avoid 
ambiguity.
- }}}
  
  == Design ==
  


[Subversion Wiki] Trivial Update of "AuthzImprovements" by StefanFuhrmann

2014-09-15 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=10&rev2=11

   denying access to anybody applies to the root path.
  
   6. If repository-specific path rules as well as global path rules
-  match a given path, only the repositor-specific ones will be
+  match a given path, only the repository-specific ones will be
   considered.
  
   7. If multiple path rules match a given repository path, only


[Subversion Wiki] Update of "AuthzImprovements" by StefanFuhrmann

2014-09-15 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=9&rev2=10

Comment:
Specify that repo-specific rules have higher prio

  
  == Inheritance and disambiguation ==
  
- These are the rules as of today, with rule 6 added to support
+ These are the rules as of today, with rule 7 added to support
  ambiguous path patches caused by pattern matching.  Please note
  the difference between ''matching'' (does a path fully match a
  given pattern?) and ''applying to'' (governing the access rights).
@@ -56, +56 @@

   5. If no ACL is given for the repository root, a default ACL
   denying access to anybody applies to the root path.
  
+  6. If repository-specific path rules as well as global path rules
+  match a given path, only the repositor-specific ones will be
+  considered.
+ 
-  6. If multiple path rules match a given repository path, only
+  7. If multiple path rules match a given repository path, only
   the one specified last in the authz file shall apply.
  
-  7. If multiple ACEs of a given ACL apply to a user, the union of
+  9. If multiple ACEs of a given ACL apply to a user, the union of
   all individually granted access rights is granted.
  
  {{{#!wiki caution 


[Subversion Wiki] Trivial Update of "AuthzImprovements" by StefanFuhrmann

2014-09-12 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=8&rev2=9

Comment:
missing word

  the difference between ''matching'' (does a path fully match a
  given pattern?) and ''applying to'' (governing the access rights).
  
-  1. An ACL is relevant to a user if the user, one of aliases or
+  1. An ACL is relevant to a user if the user, one of their aliases or
   groups that they are a member of is mentioned by at least one
   ACE in that ACL.
  


[Subversion Wiki] Update of "AuthzImprovements" by StefanFuhrmann

2014-09-12 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=7&rev2=8

Comment:
Typo and idomatic changes.

  on the context.
  
  A '''access control list (ACL)''' contains a number of '''access control 
elements (ACE)''',
- each describing what '''users''' shall have which '''access rights'''. Users 
might be specified
+ each describing which '''users''' shall have what '''access rights'''. Users 
might be specified
  indirectly by using '''groups'''.
  
  A '''path rule''' specifies what ACL applies to a given path.
@@ -35, +35 @@

  
  == Inheritance and disambiguation ==
  
- These are the rules as of today, with rule 3 added to support
+ These are the rules as of today, with rule 6 added to support
  ambiguous path patches caused by pattern matching.  Please note
  the difference between ''matching'' (does a path fully match a
  given pattern?) and ''applying to'' (governing the access rights).
@@ -59, +59 @@

   6. If multiple path rules match a given repository path, only
   the one specified last in the authz file shall apply.
  
-  7. If multiple ACEs of a given ACL apply to a user, the sum of
+  7. If multiple ACEs of a given ACL apply to a user, the union of
   all individually granted access rights is granted.
  
  {{{#!wiki caution 
@@ -165, +165 @@

  
  Wildcard sequences in paths shall be normalized internally.
  This is merely done to reduce matching costs later on and some of
- the matching code may rely on normalizes pattern.
+ the matching code may rely on normalized pattern.
  {{{
// Variable length wildcards shall be the last in a sequence
while path contains "/**/*/"


[Subversion Wiki] Update of "AuthzImprovements" by brane

2014-09-01 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by brane:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=6&rev2=7

   7. If multiple ACEs of a given ACL apply to a user, the sum of
   all individually granted access rights is granted.
  
+ {{{#!wiki caution 
+ Suggest writing "union of ... rights" not "sum of ... rights" to avoid 
ambiguity.
+ }}}
  
  == Design ==
  
@@ -87, +90 @@

   based code, additional restrictions apply:
* No rule may appear more than once in the authz file.
* Value placeholders (`%(name)s`) are not expanded.
- 
- {{{#!wiki caution 
- This is the current behaviour of the authz files, but only because we happen 
to use an `svn_config_t` to represent a parsed authz files. I suggest we should 
constrain the semantics for authz rules:
-  * No rule may appear more than once in the authz file.
-  * Value placeholders (`%(name)s`) are not expanded.
- 
- This implies writing a different constructor for the in-memory authz 
structure, but is consistent with the intent, if not the current semantics, of 
the authz files.
- 
- — Brane}}}
- 
   * Filtered path rule tree
* prefix tree with one node per segment
* created on demand per user and repository
@@ -155, +148 @@

rights: none | r | rw
  }}}
  
- {{{#!wiki caution
- '''Correction:'''
- 
- There is no such thing as write-only access in our authz model. Access rights 
can be only `none`, `r` or `rw`. This needs to be fixed throughout this doc.
- 
- — Brane}}}
- 
   Lookup state 
  {{{
  lookup-state :=
@@ -176, +162 @@

  == Algorithms ==
  
  === Normalization ===
- 
- {{{#!wiki caution
- '''Wildcard semantics?'''
- 
- These normalisations are only valid if one assumes a certain set of semantics 
for wildcards, but we do not define these semantics anywhere; see initial 
comment in this doc.
- 
- — Brane}}}
  
  Wildcard sequences in paths shall be normalized internally.
  This is merely done to reduce matching costs later on and some of
@@ -241, +220 @@

state.current = next
  }}}
  So, the full lookup without caching is
+ {{{#!wiki caution 
+ There is one step we should perform before the initial lookup: check the 
accumulated global rights calculated by the parser. There are probably many 
cases where the result of any lookup can be predicted from those rights, and 
therefore the lookup itself, and even creation of the filtered tree, could be 
skipped entirely (for the cost of a couple extra hash lookups in the worst 
case).
+ }}}
  {{{
lookup(tree : ref to filtered-tree, path : string):
state = init(tree)


[Subversion Wiki] Update of "AuthzImprovements" by brane

2014-09-01 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by brane:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=5&rev2=6

   never matches a '/' except for the case of "/**/" where it matches
   zero to many full segments. For example, "/*/**/*" will match any path that 
contains at least 2 segments
   and is equivalent to "/**/*/*" as well as "/*/*/**".
- 
- {{{#!wiki caution
- '''Missing definitions:'''
- 
- This doc does not provide an unambiguous definition of the pattern syntax.
-  * Does `foo*` match "foo"? If it does, does a single `*` match 0-or-1 
segment, or is it an exception?
-  * Is `/**/foo` hungry (i.e., does it match the longest subpath that ends in 
"foo", or the first path segment that starts with "foo")?
-  * Does `**` match 0-or-more or 1-or-more segments?
-  * What about wildcard escaping in patterns? Our current authz rules allow 
matching literal "*".
- 
- — Brane}}}
- 
  
  == Terminology ==
  


[Subversion Wiki] Update of "AuthzImprovements" by StefanFuhrmann

2014-08-30 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=4&rev2=5

Comment:
Update to current implementation and address Brane's points

   Affected operations are mainly checkout / export and log.
  
   * Support for wildcards. Subversion should support
-   * "*" or single, arbitrary path segments (with no "/" in them) and
+   * "*" for single (exactly one), arbitrary path segments (with no "/" in 
them) and
-   * "**" for arbitrary length non-empty paths.
+   * "**" for arbitrary number (zero to infinite) of path segments.
-   * Classic wildcard patterns like "*foo*.bar" shall be supported.
+   * Classic wildcard patterns like "*foo*.bar", including escapement via the 
"\" prefix shall be supported.
+   The asterisks in there match zero to many characters other than "/" making 
the whole segment form "/*/"
+   a mere special case of this.
   All wildcard usage applies to full path segments only, i.e. a '*'
   never matches a '/' except for the case of "/**/" where it matches
-  one to many full segments.
+  zero to many full segments. For example, "/*/**/*" will match any path that 
contains at least 2 segments
+  and is equivalent to "/**/*/*" as well as "/*/*/**".
  
  {{{#!wiki caution
  '''Missing definitions:'''
@@ -35, +38 @@

  Whildcards are valid segments and their interpretation depends
  on the context.
  
- A '''rule set''' contains a number of '''rules''', each
+ A '''access control list (ACL)''' contains a number of '''access control 
elements (ACE)''',
- describing what '''users''' shall have which '''access rights'''.
+ each describing what '''users''' shall have which '''access rights'''. Users 
might be specified
- Users might be specified indirectly by using '''groups'''.
+ indirectly by using '''groups'''.
  
- A '''path rule''' specifies what rule set applies to a given path.
+ A '''path rule''' specifies what ACL applies to a given path.
  
  
  == Inheritance and disambiguation ==
  
  These are the rules as of today, with rule 3 added to support
- ambiguous path patches caused by pattern matching.
+ ambiguous path patches caused by pattern matching.  Please note
+ the difference between ''matching'' (does a path fully match a
+ given pattern?) and ''applying to'' (governing the access rights).
  
-  1. Path rules implicitly apply to all paths in the respective
-  sub-tree.
+  1. An ACL is relevant to a user if the user, one of aliases or
+  groups that they are a member of is mentioned by at least one
+  ACE in that ACL.
  
+  2. Only path rules with ACLs relevant to the given user may
+  match a path.
+ 
+  3. If a path rule matches a given repository path, its ACL applies
+  to that path.
+ 
+  4. If no path rule matches a given repository path, the parent
+  path's ACL applies.
+ 
+  5. If no ACL is given for the repository root, a default ACL
+  denying access to anybody applies to the root path.
+ 
-  2. If multiple path rules match a given repository path, only
+  6. If multiple path rules match a given repository path, only
-  the path rule(s) that cover the most segments shall apply.
- 
-  3. If multiple path rules cover the same number of segments,
-  only the one specified last in the authz file shall apply.
+  the one specified last in the authz file shall apply.
  
+  7. If multiple ACEs of a given ACL apply to a user, the sum of
+  all individually granted access rights is granted.
-  4. If there are multiple rules in a rule set for a given
-  user, the union of all rights granted shall apply.
- 
-  5. The following rule is implicitly added as the first rule
-  given no access to anybody by default.
- {{{
- [/]
- * =
- }}}
  
  
  == Design ==
@@ -85, +93 @@

  Putting caching aside, the workflow involved three data models,
  building on top of each other.
  
-  * Parsing an authz file (from file system or repository)
+  * Parsing an authz file (from file system or repository),
-  yields a consolidated hash (additive sections being combined
-  automatically) of it contents in svn_config_t.
+  validating its contents and creating a pre-processed in-memory
+  representation.  In comparison to the old svn_config_t
+  based code, additional restrictions apply:
+   * No rule may appear more than once in the authz file.
+   * Value placeholders (`%(name)s`) are not expanded.
  
  {{{#!wiki caution 
  This is the current behaviour of the authz files, but only because we happen 
to use an `svn_config_t` to represent a parsed authz files. I suggest we should 
constrain the semantics for authz rules:
@@ -102, +113 @@

* prefix tree with one node per segment
* created on demand per user and repository
* contains only rules that apply to the respective user and repository
-   * multiple instances of that being cached in the svn_authz_t structure 
alongside the single svn_confi

[Subversion Wiki] Update of "AuthzImprovements" by brane

2014-08-19 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by brane:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=3&rev2=4

return state.rights
  }}}
  
+ 
+ = Implementation Notes =
+ 
+ == Changes from Current Behaviour ==
+ 
+ === Rules Defined Only Once ===
+ The config-based parser would merge and override access entries in redefined 
rules.
+ The new parser rejects authz files that define the same rule more than once.
+ 
+ === New Rule Syntax for Wildcard Rules ===
+ 
+ Existing rules come in two flavours; repository-specific and global:
+ {{{
+[repos:/path]
+[/path]
+ }}}
+ 
+ In these rules, `/path` is always matched literally. The new parser supports 
two new forms for rules with paths that contain wildcards:
+ {{{
+[:glob:repos:/path]
+[:glob:/path]
+ }}}
+ 
+ Because a glob rule is not required to actually contain wildcards in the 
path, two sections with different names may represent the same rule; for 
example,
+ {{{
+[/path]
+[:glob:/path]
+ }}}
+ the above two rules are identical. The new parser detects (and rejects) such 
collisions.
+ 
+ === Write-only Access is Not Allowed ===
+ 
+ The config-based authz parser will allow access entries that grant only write 
access; e.g.,
+ {{{
+[/]
+* = w
+ }}}
+ The new parser flags such entries as invalid; our authz implementation does 
not support write-only access.
+ 
+ === Only Group Definitions in the Global Groups File ===
+ 
+ The new parser allows only group definitions (i.e., only the `[groups]` 
section) in the global groups file. The config-based parser would allow other 
sections there, but they would be ignored.
+ 


[Subversion Wiki] Update of "AuthzImprovements" by brane

2014-07-30 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by brane:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=2&rev2=3

   never matches a '/' except for the case of "/**/" where it matches
   one to many full segments.
  
+ {{{#!wiki caution
+ '''Missing definitions:'''
+ 
+ This doc does not provide an unambiguous definition of the pattern syntax.
+  * Does `foo*` match "foo"? If it does, does a single `*` match 0-or-1 
segment, or is it an exception?
+  * Is `/**/foo` hungry (i.e., does it match the longest subpath that ends in 
"foo", or the first path segment that starts with "foo")?
+  * Does `**` match 0-or-more or 1-or-more segments?
+  * What about wildcard escaping in patterns? Our current authz rules allow 
matching literal "*".
+ 
+ — Brane}}}
+ 
  
  == Terminology ==
  
@@ -77, +88 @@

   * Parsing an authz file (from file system or repository)
   yields a consolidated hash (additive sections being combined
   automatically) of it contents in svn_config_t.
+ 
+ {{{#!wiki caution 
+ This is the current behaviour of the authz files, but only because we happen 
to use an `svn_config_t` to represent a parsed authz files. I suggest we should 
constrain the semantics for authz rules:
+  * No rule may appear more than once in the authz file.
+  * Value placeholders (`%(name)s`) are not expanded.
+ 
+ This implies writing a different constructor for the in-memory authz 
structure, but is consistent with the intent, if not the current semantics, of 
the authz files.
+ 
+ — Brane}}}
  
   * Filtered path rule tree
* prefix tree with one node per segment
@@ -136, +156 @@

rights: none | r | w | rw
  }}}
  
+ {{{#!wiki caution
+ '''Correction:'''
+ 
+ There is no such thing as write-only access in our authz model. Access rights 
can be only `none`, `r` or `rw`. This needs to be fixed throughout this doc.
+ 
+ — Brane}}}
+ 
   Lookup state 
  {{{
  lookup-state :=
@@ -150, +177 @@

  == Algorithms ==
  
  === Normalization ===
+ 
+ {{{#!wiki caution
+ '''Wildcard semantics?'''
+ 
+ These normalisations are only valid if one assumes a certain set of semantics 
for wildcards, but we do not define these semantics anywhere; see initial 
comment in this doc.
+ 
+ — Brane}}}
  
  Wildcard sequences in paths in rule sets shall be normalized.
  This is merely done to reduce matching costs later on.


[Subversion Wiki] Update of "AuthzImprovements" by StefanFuhrmann

2014-07-29 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements?action=diff&rev1=1&rev2=2

Comment:
Nicer formatting in the goals section

   * Performance when a large number of paths needs to be checked.
   Affected operations are mainly checkout / export and log.
  
-  * Support for wildcards.
-  Subversion should support "*" or single, arbitrary path segments
+  * Support for wildcards. Subversion should support
+   * "*" or single, arbitrary path segments (with no "/" in them) and
-  (with no "/" in them) and "**" for arbitrary length non-empty paths.
+   * "**" for arbitrary length non-empty paths.
-  Finally, classic wildcard patterns like "*foo*.bar" shall be supported.
+   * Classic wildcard patterns like "*foo*.bar" shall be supported.
   All wildcard usage applies to full path segments only, i.e. a '*'
   never matches a '/' except for the case of "/**/" where it matches
   one to many full segments.


[Subversion Wiki] Update of "AuthzImprovements" by StefanFuhrmann

2014-07-29 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "AuthzImprovements" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/AuthzImprovements

Comment:
Initial version.

New page:
= Improved authz =

== Goals ==

The current (1.9) implementation of authz is lacking in two areas:

 * Performance when a large number of paths needs to be checked.
 Affected operations are mainly checkout / export and log.

 * Support for wildcards.
 Subversion should support "*" or single, arbitrary path segments
 (with no "/" in them) and "**" for arbitrary length non-empty paths.
 Finally, classic wildcard patterns like "*foo*.bar" shall be supported.
 All wildcard usage applies to full path segments only, i.e. a '*'
 never matches a '/' except for the case of "/**/" where it matches
 one to many full segments.


== Terminology ==

A '''path''' consists of '''segments''', separated by "/".
Whildcards are valid segments and their interpretation depends
on the context.

A '''rule set''' contains a number of '''rules''', each
describing what '''users''' shall have which '''access rights'''.
Users might be specified indirectly by using '''groups'''.

A '''path rule''' specifies what rule set applies to a given path.


== Inheritance and disambiguation ==

These are the rules as of today, with rule 3 added to support
ambiguous path patches caused by pattern matching.

 1. Path rules implicitly apply to all paths in the respective
 sub-tree.

 2. If multiple path rules match a given repository path, only
 the path rule(s) that cover the most segments shall apply.

 3. If multiple path rules cover the same number of segments,
 only the one specified last in the authz file shall apply.

 4. If there are multiple rules in a rule set for a given
 user, the union of all rights granted shall apply.

 5. The following rule is implicitly added as the first rule
 given no access to anybody by default.
{{{
[/]
* =
}}}


== Design ==

The idea is to use combine the following approaches:

 * Preprocessed, tree-like data structures applied to segmented paths
 * Reduction of the tree to what applies to the current user
 * Pre-calculate recursive rights for early exist

In the initial implementation we may rely on the svn_config API
to provide us with parser functionality.  At that stage, we don't
need an independent representation of the whole file contents.


=== General workflow ===

Putting caching aside, the workflow involved three data models,
building on top of each other.

 * Parsing an authz file (from file system or repository)
 yields a consolidated hash (additive sections being combined
 automatically) of it contents in svn_config_t.

 * Filtered path rule tree
  * prefix tree with one node per segment
  * created on demand per user and repository
  * contains only rules that apply to the respective user and repository
  * multiple instances of that being cached in the svn_authz_t structure 
alongside the single svn_config_t
  * rule sets being reduced to access rights + order ID
  * each node knows min / max rights on all sub-nodes

 * Lookup state
  * access rights accordingly the latest matching path rule
  * list of tree nodes that may match sub-paths as we may need to follow 
multiple patterns
  * temporary data structure thats reused between queries to save on allocation 
and construction overhead


=== Data models ===

These are persistent in the sense that we will cache and reuse
them.  They do not cover transient data models that various
algorithms may use e.g. during authz parsing.

Unless indicated otherwise, all collections are ordered.

Only abstract types / the interface view is given here; the actual
implementation may be different.

 Filtered path rule tree 
{{{
filtered-tree :=
root  : filtered-node   // exists due to default path rule

filtered-node :=
segment   : string  // empty for root
access: ref to access-type  // empty if no path ends here
min-rights: none | r | w | rw   // user's minimum rights on any path in 
the sub-tree
max-rights: none | r | w | rw   // user's maximum rights on any path in 
the sub-tree
repeat: boolean // set on nodes for "**" segments

sub-nodes : { map following segment => filtered-node }[0..*]
// one node per non-wildcard in 
following segment
// empty if no rules on following 
segments

// the following will be aggregated into a sub-structure to
// facilitate a quick "has pattern sub-segment?" check
any   : filtered-node   // empty if no path rule with "*" in 
following segment
any-var   : filtered-node   // empty if no path rule with "**" in 
following segment
prefixed  : { list of filtered-node }[0..*]
// empty if no pa

[Subversion Wiki] Update of "SavePoints" by JulianFoad

2014-07-14 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "SavePoints" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/SavePoints?action=diff&rev1=3&rev2=4

Comment:
Add my comments (questions).

  == Design: SavePoints ==
- 
  There are many client side features that people have desired with Subversion 
that require the ability to store the state of a working copy without 
committing to the repository.  This document exists to try and flush out a 
design for the save point feature from which we can build such features.
  
  === Expected Features ===
- 
  Before we can look at the design it's helpful to have an idea of what 
features we want to support in detail.
  
   * Destructive command rollback.  We have a variety of commands that either 
permanently destroy uncommitted local modifications or make it rather 
inconvenient to put them back the way they were.  It would be nice if we could 
store our state before executing these commands and then provide a command to 
restore that state if the user decided that the state is undesirable.
@@ -14, +12 @@

  
   * Workspaces.  Otherwise known as local commit/branching.  Generally being 
able to work on changes and then be able to save your state at various points 
along the way.  Allowing these states to be committed as a series of commits or 
to be squashed into a single commit.  Eventually even allowing this local 
history to be manipulated in more complex ways such as rebasing.
  
+ === What is a SavePoint ===
+ A save point is the stored state of a working copy at a given point in time.  
It consists of the following pieces of information:
+ 
+  ||name ||purpose ||
+  ||id ||primary key for save point unique between all save points, integer ||
+  ||workspace ||group of related savepoints this savepoint belongs to, string 
||
+  ||name ||optional user defined name of the savepoint, string ||
+  ||order ||the savepoints order within the namespace, integer ||
+  ||automatic ||boolean, true if the savepoint was created automatically ||
+  ||log ||string describing the modifications in the save point ||
+  ||nodes ||set of wc db nodes table entires for the nodes (stored in the 
nodes table or another table, TBD) ||
+  ||blob contents ||data for locally modified files and properties (stored in 
pristine files, something like that or in some cases stored in wc db) ||
  
  
- === What is a SavePoint ===
- 
- A save point is the stored state of a working copy at a given point in time.  
It consists of the following pieces of information:
-   || name || purpose ||
-   || id || primary key for save point unique between all save points, integer 
||
-   || workspace || group of related savepoints this savepoint belongs to, 
string ||
-   || name || optional user defined name of the savepoint, string ||
-   || order || the savepoints order within the namespace, integer ||
-   || automatic || boolean, true if the savepoint was created automatically ||
-   || log || string describing the modifications in the save point ||
-   || nodes || set of wc db nodes table entires for the nodes (stored in the 
nodes table or another table, TBD) ||
-   || blob contents || data for locally modified files and properties (stored 
in pristine files, something like that or in some cases stored in wc db) ||
  
  SavePoints will always belong to a workspace.  Within the workspace the 
member SavePoints will be ordered.  Workspace names beginning with "svn:" are 
reserved for internal Subversion use.  Stash will use the "svn:stash" 
workspace.  There will be a current work space, which will default to something 
possibly "Default".  Save points for rolling back destructive commands will be 
created in the current workspace with the automatic flag set to true.  Save 
Points are considered immutable once created.  Workspaces may be mutable but we 
likely will like to always handle modifying them by creating a new temporary 
workspace and then copying save points that are unmodified and creating fresh 
ones with the changed states.  Treating them as immutable and recreating them 
to modify them means if the modification fails for some reason, we have not 
lost data.
  
  === Nodes data ===
- 
  The nodes table of the wc db will have a new column added which optionally 
specifies a savepoint id.  When creating a SavePoint the wc db nodes table data 
without a savepoint id (that is the current state of the nodes in the working 
copy) will be duplicated with the savepoint id set.  It may be desirable to use 
a separate table for this e.g. savepoint_nodes.  Duplicating the entire nodes 
table may not be as fast as we desire, in general we desire the creation of 
save points to be fast since users will likely be doing this often.  However, 
we have decided not to implement optimization of the representation at this 
time and rather first implement a full copy since it will be simpler for 
initial implementation a

[Subversion Wiki] Trivial Update of "MeasuringRepositoryPerformance" by StefanFuhrmann

2014-07-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "MeasuringRepositoryPerformance" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/MeasuringRepositoryPerformance?action=diff&rev1=1&rev2=2

Comment:
typo

  
  With this 
[[https://svn.apache.org/repos/asf/subversion/trunk/tools/dev/benchmarks/RepoPerf/copy_repo.py|python
 script]], you also get random data files of up to the specified size being 
written in between revisions.  Those get deleted once the copy is complete. 
Depending on the OS / SAN heuristics, this may mimic the presence of other 
repositories growing as the copied one does.  Moreover, multiple repositories 
get copied at once in a round-robin interleaved scheme, i.e. copy rev 0 of all 
repositories, then rev 1 of all repositories, etc.
  
- The spacing parameter should be equal to the average revision data being 
written to other repos for each revision / packed shard copy round.  IOW 
something like (total size of "missing" repos) / (number of revs in copied 
repos).  As that may result in too much transiently disk space being 
allocation, you may use 128 here.  That plays well with typical RAID strip and 
OS prefetch sizes.
+ The spacing parameter should be equal to the average revision data being 
written to other repos for each revision / packed shard copy round.  IOW 
something like (total size of "missing" repos) / (number of revs in copied 
repos).  As that may result in too much transiently disk space being allocated, 
you may use 128 here.  That plays well with typical RAID strip and OS prefetch 
sizes.
  
  == What to test ==
  Before you conduct performance tests, you need to decide upon the scenarios 
as well as what kind of conclusions you want to be able to draw from the 
results.  For the latter, it is often useful to identify the components and 
settings involved and to be able to isolate their contribution.


[Subversion Wiki] Update of "MeasuringRepositoryPerformance" by StefanFuhrmann

2014-07-13 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "MeasuringRepositoryPerformance" page has been changed by StefanFuhrmann:
https://wiki.apache.org/subversion/MeasuringRepositoryPerformance

Comment:
Initial version.

New page:
= Measuring Repository Performance =
Repositories are just passive collections of files on disk, but their physical 
layout affects performance just as well as the hardware and software 
configuration.

This page is about

 * how to produce realistic on-disk layouts
 * what to test
 * how to to produce meaningful test results

The methodology applies to a wide range of setups and repository formats.  FSFS 
is being used as an example but the basic rationales should apply to others as 
well.

== How to produce realistic on-disk layouts ==
=== TL;DR ===
Either properly clone your data storage (see below) or use a script
[[https://svn.apache.org/repos/asf/subversion/trunk/tools/dev/benchmarks/RepoPerf/copy_repo.py|like
 this]] for FSFS repositories:

{{{
copy_repo.py SRC DST COUNT SEPARATOR_SIZE

SRCImmediate parent folder of all the repositories to copy.
DSTFolder to copy into; current contents will be lost.
COUNT  Number of copies to create of each source repository.
SEPARATOR_SIZE Additional spacing, in kBytes, between revisions.

e.g. copy_repo.py /tmp/acme /test/acme 4 128
}}}

=== Problem ===

Non-packed FSFS repositories may consist of millions of files of varying sizes. 
 Even for seemingly simple queries, data from thousands of them needs to be 
processed.  If they happened to be stored physically close to each other on 
disk, the information can be retrieved with just a handful of I/Os.  Should 
they be dispersed across the storage medium, it will take thousands of 
individual and hard-to-predict (by the OS) I/Os.

Therefore, it is paramount that your test setup mimics the physical properties 
of the class of production environments you want to test for.

Note that this does not only apply to HDDs (spinning disks) but to any media 
that has non-zero I/O latency, including SSDs. The issue is whether OS- or 
hardware-side prefetching will be effective such that most requests can be 
served from some level of cache.

Things are complicated by the fact that the OS, its file system code or the SAN 
software give the user very little control over where it puts the data 
physically.  The best one may hope for is that the same sequence of operations 
produces similar - if not identical - layouts on previously empty disks.

=== Ideal solution ===
Clone the production environment.  Everything else is just an approximation.  
Various methods to produce good approximations are discussed in later sections.

Cloning in this case, however, must produce the same (or reasonably similar) 
disk images.  Merely copying files will create the same unrealistic setup as 
the Naive approach below. That also precludes differential file copies as a 
means to keep the test environment in sync with the production environment.

=== Naive approach ===
Simply copying an existing repository to the target storage will often store 
data densely and roughly in path order. For non-packed FSFS repositories, for 
instance, that means revision content is stored consecutively almost producing 
a packed repository.  The same applies to its revision properties, making the 
enumeration of all revprops via 'svn log $repo/' very fast.

"Naturally grown" repositories store data in revision order, though.  As a 
result, it may be cheaper to get from the revision file to the revprops (for 
time stamps etc.) than in a copied repo.  OTOH, the revprops themselves may get 
much more spread out if the OS decides to intersperse them with revision data.

For servers hosting multiple active repositories, "naturally grown" 
repositories look even more different.  Because many  commits to other 
repositories tend to happen between any two commits to the same repository, the 
individual revisions of all these repositories may interleave on disk, creating 
large and random gaps between the individual revisions of a repository.

Copying packed FSFS repositories creates the same problems in theory but less 
so in practice.  However, as the individual pack files are large and get 
written quickly in a single go, individual packs look very much like copied 
packs.  Their sheer size requires some I/O going from one pack to the other and 
the physical distance between packs becomes a secondary factor.

Note that the OS or SAN may still decide to place small files within the same 
directory close to each other on disk.  That's fine and should produce good, 
*reproducible* performance figures. But we must try to not inadvertently aid 
the OS in doing this.

=== 'svnadmin load' ===
This creates repository data in the correct order and if your server hosts only 
one major repository that may even be a fair approximation of the production 
envir

[Subversion Wiki] Update of "SupportedMergeScenarios" by JulianFoad

2014-06-27 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "SupportedMergeScenarios" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/SupportedMergeScenarios?action=diff&rev1=19&rev2=20

Comment:
Add a suggestion about untracked merges, from Matt Phipps

- ~-''Design notes, plans and ideas.''
+ ~-''Design notes, plans and ideas.'' -~
  
- ''This is not part of the official documentation of Subversion. It is aimed 
at the developers of Subversion, and may not reflect reality or the project 
community's plans. For official documentation, see'' 
http://subversion.apache.org/docs/ ''.''-~
+ ~-''This is not part of the official documentation of Subversion. It is aimed 
at the developers of Subversion, and may not reflect reality or the project 
community's plans. For official documentation, see'' 
http://subversion.apache.org/docs/ ''.''-~
  
  
  = What Merges Does Svn’s Merge Tracking Support? =
@@ -80, +80 @@

   1. A  tracked merge is transitive.  In merging A:10 from A to B, if A:10 was 
 itself a merge that brought in one or more recorded changes from  elsewhere 
(say Z:9), then as well as recording A:10 on B, we also record  Z:9 on B.
  
   Non-Tracked Merge 
-  1. You  can use the “merge” command to merge changes in such a way that the  
committed result is not recorded as a merge.  In terms of merge  tracking, 
Subversion sees this commit as an original change, not as a  merge.  This kind 
of merge should be used only in special cases.  ###  WHICH MERGES ARE THESE? 
WHEN ARE THEY APPROPRIATE?  WHEN DO THEY HAPPEN  SILENTLY?
+  1. You  can use the “merge” command to merge changes in such a way that the  
committed result is not recorded as a merge.  In terms of merge  tracking, 
Subversion sees this commit as an original change, not as a  merge.
+  1. When would a non-tracked merge be useful? Matt Phipps wrote to dev@ to 
suggest one case: A merge like that would make sense if you wanted to do a 
Git-style rebase for whatever reason. You would create a new project branch off 
your development branch, cherry-pick all the non-merge changes from the old 
project branch onto it (possibly grouping or reordering or deleting commits), 
then delete the old branch. The new branch shouldn't have mergeinfo from the 
old branch since the old branch is getting deleted and replaced.
+  1. ###  WHICH MERGE COMMAND VARIANTS PERFORM A NON-TRACKED MERGE?  WHEN DO 
THEY HAPPEN  SILENTLY? One example of a change that is "silently"  untracked is 
a reverse merge from the branch's own history.<>
  
   Record-Only Merge 
   1. A  “record-only” merge acts like a normal merge except that it does not  
make edits to the target branch, it only updates the mergeinfo on the  target 
branch as if that merge had happened.  After a ''record-only merge''  has been 
committed, although only the mergeinfo changed in that commit,  the merge 
tracking logic sees that commit as the time when the merge  (the one that is 
now recorded) was performed.  It doesn’t notice that  there is no physical 
change in the commit.  It doesn’t care whether the  physical change was in fact 
merged into this target branch in the past  or will be merged in the future.  
If and when the physical change is  merged as a non-tracked merge, that commit 
will be regarded as an  original change and not as a merge.


[Subversion Wiki] Update of "Svn19ApiReview" by brane

2014-06-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by brane:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=8&rev2=9

   * `svn_client_cleanup`  — Missing SVN_DEPRECATED annotation.
  
  === svn_dirent_uri.h ===
-  * svn_relpath_limit — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
'svn_relpath__first_n_components'.
+  * `svn_relpath_limit` — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
'svn_relpath__first_n_components'.
  
  === svn_types.h ===
-  * svn_null_pointer_constant_stdarg_sentinel_t — Should this be private?
+  * `svn_null_pointer_constant_stdarg_sentinel_t` — Should this be private?
+* No; the idea is that API users can use `SVN_VA_NULL`. Note that the 
definition is a forward declaration of the type for the purpose of making it a 
pointer constant that's not trivially assignable to anything else (except 
`void*`), but the type itself is never defined, on purpose. — brane
  
  
  == Review Completed! ==


[Subversion Wiki] Update of "Svn19ApiReview" by JulianFoad

2014-06-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=7&rev2=8

   * `svn_client_cleanup2` — Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`. (svn 
praise: r1548088 rhuijben)
   * `svn_client_cleanup`  — Missing SVN_DEPRECATED annotation.
  
+ === svn_dirent_uri.h ===
+  * svn_relpath_limit — Is this really a good public API, either in 
functionality or in name? I  suggest it should be a local function in the one 
file where it's used,  or else made private and named 
'svn_relpath__first_n_components'.
+ 
+ === svn_types.h ===
+  * svn_null_pointer_constant_stdarg_sentinel_t — Should this be private?
+ 
  
  == Review Completed! ==
  Nothing yet.


[Subversion Wiki] Update of "Svn19ApiReview" by JulianFoad

2014-06-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=6&rev2=7

  New functions:
  
   * `svn_client_vacuum` — Missing documentation for arguments 
`fix_recorded_timestamps` and `vacuum_pristines`. (svn praise: r1548088 
rhuijben)
-  * `svn_client_cleanup2` — Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`. (svn 
praise: r1548088 rhuijben)  — Missing SVN_DEPRECATED annotation.
+  * `svn_client_cleanup2` — Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`. (svn 
praise: r1548088 rhuijben)
+  * `svn_client_cleanup`  — Missing SVN_DEPRECATED annotation.
  
  
  == Review Completed! ==


[Subversion Wiki] Update of "Svn19ApiReview" by JulianFoad

2014-06-23 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=5&rev2=6

  
  
  == Needs Review ==
- 
- 
  
  == Reviewed But Need Further Attention ==
  === svn_client.h ===
- 
  New functions:
  
   * `svn_client_vacuum` — Missing documentation for arguments 
`fix_recorded_timestamps` and `vacuum_pristines`. (svn praise: r1548088 
rhuijben)
-  * `svn_client_cleanup2` — Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`. (svn 
praise: r1548088 rhuijben)
+  * `svn_client_cleanup2` — Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`. (svn 
praise: r1548088 rhuijben)  — Missing SVN_DEPRECATED annotation.
  
  
  == Review Completed! ==


[Subversion Wiki] Update of "Svn19ApiReview" by brane

2014-06-22 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by brane:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=4&rev2=5

  
  New functions:
  
-  * `svn_client_vacuum` -- Missing documentation for arguments 
`fix_recorded_timestamps` and `vacuum_pristines`.
+  * `svn_client_vacuum` — Missing documentation for arguments 
`fix_recorded_timestamps` and `vacuum_pristines`. (svn praise: r1548088 
rhuijben)
-  * `svn_client_cleanup2` -- Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`.
+  * `svn_client_cleanup2` — Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`. (svn 
praise: r1548088 rhuijben)
  
  
  == Review Completed! ==


[Subversion Wiki] Update of "Svn19ApiReview" by brane

2014-06-21 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by brane:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=3&rev2=4

   * `svn_client_cleanup2` -- Missing documentation for arguments 
`fix_recorded_timestamps`, `clear_dav_cache` and `vacuum_pristines`.
  
  
- == Review Completed! =
+ == Review Completed! ==
  Nothing yet.
  


[Subversion Wiki] Update of "Svn19ApiReview" by brane

2014-06-21 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by brane:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=2&rev2=3

  = Svn19ApiReview =
- This page contains a list of all the new additions to the public Subversion 
1.8-dev API.
+ This page contains a list of all the new additions to the public Subversion 
1.9-dev API.
  
  
  == Needs Review ==


[Subversion Wiki] Update of "Svn19ApiReview" by brane

2014-06-21 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by brane:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=2&rev2=3

  = Svn19ApiReview =
- This page contains a list of all the new additions to the public Subversion 
1.8-dev API.
+ This page contains a list of all the new additions to the public Subversion 
1.9-dev API.
  
  
  == Needs Review ==


[Subversion Wiki] Update of "Svn19ApiReview" by brane

2014-06-21 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Svn19ApiReview" page has been changed by brane:
https://wiki.apache.org/subversion/Svn19ApiReview?action=diff&rev1=2&rev2=3

  = Svn19ApiReview =
- This page contains a list of all the new additions to the public Subversion 
1.8-dev API.
+ This page contains a list of all the new additions to the public Subversion 
1.9-dev API.
  
  
  == Needs Review ==


[Subversion Wiki] Update of "ManyHands" by brane

2014-06-21 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "ManyHands" page has been changed by brane:
https://wiki.apache.org/subversion/ManyHands?action=diff&rev1=4&rev2=5

   * Svn18ApiReview - Subversion 1.8 new API review
   * Svn18Changes - Populating the Subversion 1.8.0 CHANGES file
  
+  * Svn19ApiReview - Subversion 1.9 new API review
+ 


[Subversion Wiki] Update of "SavePoints" by BenReser

2014-06-17 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "SavePoints" page has been changed by BenReser:
https://wiki.apache.org/subversion/SavePoints?action=diff&rev1=2&rev2=3

  
  Before we can look at the design it's helpful to have an idea of what 
features we want to support in detail.
  
-  * Destructive command rollback.  We have a variety of commands that either 
permanently destroy uncommitted local modifications or make it rather 
inconvenient to put them back the way they were.  It would be nice if we could 
store our state before executing these features and then provide a command to 
restore that state if the user decided that the state is undesirable.
+  * Destructive command rollback.  We have a variety of commands that either 
permanently destroy uncommitted local modifications or make it rather 
inconvenient to put them back the way they were.  It would be nice if we could 
store our state before executing these commands and then provide a command to 
restore that state if the user decided that the state is undesirable.
  
   * Stash.  Git has functionality where you can store your working copy state 
locally in something they call the stash and remove all local modifications to 
the working copy.  This allows you to for instance set aside a piece of work 
you are doing temporarily to fix some other thing and then after you have 
committed restore your working copy back to the previous state.  Users can 
simulate something like this somewhat now by taking a diff, reverting, making 
the other change, committing, and then applying the patch.  Except that of 
course `svn patch` is not fully capable of applying all modifications the 
working copy can represent.  Something more automatic and that you don't have 
to keep track of patch files would be far more convenient.
  
@@ -25, +25 @@

|| name || optional user defined name of the savepoint, string ||
|| order || the savepoints order within the namespace, integer ||
|| automatic || boolean, true if the savepoint was created automatically ||
+   || log || string describing the modifications in the save point ||
|| nodes || set of wc db nodes table entires for the nodes (stored in the 
nodes table or another table, TBD) ||
|| blob contents || data for locally modified files and properties (stored 
in pristine files, something like that or in some cases stored in wc db) ||
  
- SavePoints will always belong to a workspace.  Within the workspace the 
member SavePoints will be ordered.  Workspace names beginning with "svn:" are 
reserved for internal Subversion use.  Stash will use the "svn:stash" 
workspace.  There will be a current work space, which will default to something 
possibly "Default".  Save points for rolling back destructive commands will be 
created in the current workspace with the automatic flag set to true.
+ SavePoints will always belong to a workspace.  Within the workspace the 
member SavePoints will be ordered.  Workspace names beginning with "svn:" are 
reserved for internal Subversion use.  Stash will use the "svn:stash" 
workspace.  There will be a current work space, which will default to something 
possibly "Default".  Save points for rolling back destructive commands will be 
created in the current workspace with the automatic flag set to true.  Save 
Points are considered immutable once created.  Workspaces may be mutable but we 
likely will like to always handle modifying them by creating a new temporary 
workspace and then copying save points that are unmodified and creating fresh 
ones with the changed states.  Treating them as immutable and recreating them 
to modify them means if the modification fails for some reason, we have not 
lost data.
  
- === 
+ === Nodes data ===
  
+ The nodes table of the wc db will have a new column added which optionally 
specifies a savepoint id.  When creating a SavePoint the wc db nodes table data 
without a savepoint id (that is the current state of the nodes in the working 
copy) will be duplicated with the savepoint id set.  It may be desirable to use 
a separate table for this e.g. savepoint_nodes.  Duplicating the entire nodes 
table may not be as fast as we desire, in general we desire the creation of 
save points to be fast since users will likely be doing this often.  However, 
we have decided not to implement optimization of the representation at this 
time and rather first implement a full copy since it will be simpler for 
initial implementation and will give us some idea of this implementations 
performance.
+ 
+ === Blob data ===
+ 
+ We have not made a final decision on how to store blob data.  There are two 
general locations and one that may be used along side them:
+ 
+  * Use the existing pristine store as is.  The advantage of this option is 
that storage is shared with the pristines.  The disadvantage is that it mixes 
pristine data with data that is not pristine.  This risks p

[Subversion Wiki] Update of "SavePoints" by BenReser

2014-06-17 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "SavePoints" page has been changed by BenReser:
https://wiki.apache.org/subversion/SavePoints?action=diff&rev1=1&rev2=2

  == Design: SavePoints ==
  
- stub page just to get started
+ There are many client side features that people have desired with Subversion 
that require the ability to store the state of a working copy without 
committing to the repository.  This document exists to try and flush out a 
design for the save point feature from which we can build such features.
  
+ === Expected Features ===
+ 
+ Before we can look at the design it's helpful to have an idea of what 
features we want to support in detail.
+ 
+  * Destructive command rollback.  We have a variety of commands that either 
permanently destroy uncommitted local modifications or make it rather 
inconvenient to put them back the way they were.  It would be nice if we could 
store our state before executing these features and then provide a command to 
restore that state if the user decided that the state is undesirable.
+ 
+  * Stash.  Git has functionality where you can store your working copy state 
locally in something they call the stash and remove all local modifications to 
the working copy.  This allows you to for instance set aside a piece of work 
you are doing temporarily to fix some other thing and then after you have 
committed restore your working copy back to the previous state.  Users can 
simulate something like this somewhat now by taking a diff, reverting, making 
the other change, committing, and then applying the patch.  Except that of 
course `svn patch` is not fully capable of applying all modifications the 
working copy can represent.  Something more automatic and that you don't have 
to keep track of patch files would be far more convenient.
+ 
+  * Workspaces.  Otherwise known as local commit/branching.  Generally being 
able to work on changes and then be able to save your state at various points 
along the way.  Allowing these states to be committed as a series of commits or 
to be squashed into a single commit.  Eventually even allowing this local 
history to be manipulated in more complex ways such as rebasing.
+ 
+ 
+ 
+ === What is a SavePoint ===
+ 
+ A save point is the stored state of a working copy at a given point in time.  
It consists of the following pieces of information:
+   || name || purpose ||
+   || id || primary key for save point unique between all save points, integer 
||
+   || workspace || group of related savepoints this savepoint belongs to, 
string ||
+   || name || optional user defined name of the savepoint, string ||
+   || order || the savepoints order within the namespace, integer ||
+   || automatic || boolean, true if the savepoint was created automatically ||
+   || nodes || set of wc db nodes table entires for the nodes (stored in the 
nodes table or another table, TBD) ||
+   || blob contents || data for locally modified files and properties (stored 
in pristine files, something like that or in some cases stored in wc db) ||
+ 
+ SavePoints will always belong to a workspace.  Within the workspace the 
member SavePoints will be ordered.  Workspace names beginning with "svn:" are 
reserved for internal Subversion use.  Stash will use the "svn:stash" 
workspace.  There will be a current work space, which will default to something 
possibly "Default".  Save points for rolling back destructive commands will be 
created in the current workspace with the automatic flag set to true.
+ 
+ === 
+ 


[Subversion Wiki] Update of "DesignNotes" by BenReser

2014-06-17 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "DesignNotes" page has been changed by BenReser:
https://wiki.apache.org/subversion/DesignNotes?action=diff&rev1=40&rev2=41

Comment:
Add SavePoints entry.

   * MultiLayerMoves - recording multiple layers of moves in the working copy
   * NodesOperations - understanding WCNG NODES table
   * [[Inheritable-Ignores-AutoProps|Repository Dictated Configuration]] -  
server-dictated configuration via inheritable props
+  * SavePoints - implementation of stored working copy state to allow rolling 
back to such a state, stash, and local commits.
   * SymmetricMerge - understanding sync, reintegrate, catch-up, cherry-pick 
merges
   * UnicodeNormalization - managing differences in Unicode character 
composition in paths and mergeinfo
  


[Subversion Wiki] Update of "SavePoints" by BenReser

2014-06-17 Thread Apache subversion Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "SavePoints" page has been changed by BenReser:
https://wiki.apache.org/subversion/SavePoints

New page:
== Design: SavePoints ==

stub page just to get started


  1   2   3   4   5   6   7   8   9   10   >