Re: AW: How to find out the rev number where a file was deleted?

2010-11-28 Thread Daniel Shahaf
[ sorry if I'm repeating; haven't read the whole thread ]

Johan Corveleyn wrote on Sun, Nov 28, 2010 at 10:05:15 +0100:
 FWIW, you do have a point, Andrey (and others), that this is a valid
 use case (finding the rev in which a file was deleted) which isn't
 well supported by svn currently. I think the svn devs are very much
 aware of this, but it just isn't there yet. See also this issue:
 
 http://subversion.tigris.org/issues/show_bug.cgi?id=3627 - FS API
 support for oldest-to-youngest history traversal
 
 It literally mentions this use case as one of the high-level user needs:
   - allowing 'svn log' to fully traverse the entire history of a
 given versioned
 object, both for completeness' sake and to facilitate (for example) 
 resurrection
 of deleted items from their most-recently-existing forms.
 
 Unfortunately, according to the current plans, it might be a while
 before this is implemented. On the roadmap, it is listed as being
 dependent on FS-NG (Flexible Repository Storage), on the list of
 most wanted features:
 http://subversion.apache.org/roadmap.html#features-most-wanted.

Just to clarify, this doesn't mean we don't like this feature; it means
a non-trivial bit of work is needed to implement it, because this
question is not easily answerable given the current state/design of
the backends.


There are two related questions here:

* Given p...@rn which exists, what is the largest rM such that
  p...@ri and p...@rn are the same node (no adds/replaces/deletes
  have occured in or above PATH) for all N≤I≤M?

* What are all the (path,revision) objects that are the same line of
  history as a given p...@rn?  In other words, what are all the places
  p...@rn has been copied to, and all the revisions where those copies
  were touched?


Re: AW: How to find out the rev number where a file was deleted?

2010-11-28 Thread Stefan Sperling
On Sun, Nov 28, 2010 at 01:27:28PM +0200, Daniel Shahaf wrote:
 [ sorry if I'm repeating; haven't read the whole thread ]
 
 Johan Corveleyn wrote on Sun, Nov 28, 2010 at 10:05:15 +0100:
  FWIW, you do have a point, Andrey (and others), that this is a valid
  use case (finding the rev in which a file was deleted) which isn't
  well supported by svn currently. I think the svn devs are very much
  aware of this, but it just isn't there yet. See also this issue:
  
  http://subversion.tigris.org/issues/show_bug.cgi?id=3627 - FS API
  support for oldest-to-youngest history traversal
  
  It literally mentions this use case as one of the high-level user needs:
- allowing 'svn log' to fully traverse the entire history of a
  given versioned
  object, both for completeness' sake and to facilitate (for example) 
  resurrection
  of deleted items from their most-recently-existing forms.
  
  Unfortunately, according to the current plans, it might be a while
  before this is implemented. On the roadmap, it is listed as being
  dependent on FS-NG (Flexible Repository Storage), on the list of
  most wanted features:
  http://subversion.apache.org/roadmap.html#features-most-wanted.
 
 Just to clarify, this doesn't mean we don't like this feature; it means
 a non-trivial bit of work is needed to implement it, because this
 question is not easily answerable given the current state/design of
 the backends.
 
 
 There are two related questions here:
 
 * Given p...@rn which exists, what is the largest rM such that
   p...@ri and p...@rn are the same node (no adds/replaces/deletes
   have occured in or above PATH) for all N≤I≤M?
 
 * What are all the (path,revision) objects that are the same line of
   history as a given p...@rn?  In other words, what are all the places
   p...@rn has been copied to, and all the revisions where those copies
   were touched?

Of course, these questions can be answered by a human or a script if given
some time to crawl through the output of svn log. E.g. the trumerge
script does this: http://trumerge.open.collab.net/

The real problem is that we want to be able to answer these questions
very fast, and some design aspects work against this. For instance,
FSFS by design does not allow modifying old revisions. So where do
we store the copy-to information for a given p...@n? The best idea we've
had so far was using an sqlite database. But that's really a hack
around a design that doesn't support all the features we want.

Stefan


Re: AW: How to find out the rev number where a file was deleted?

2010-11-28 Thread Les Mikesell

On 11/28/10 12:28 AM, Andrey Repin wrote:



It doesn't track the future of a file, it tracks the history. Start with a peg
revision


Wat? It start with HEAD irrelevant to what PEG revision we've specified.
And immediately spitting no such file, although the file is 100% there.


Yes, if you ask it for HEAD in your range, it has to start there because history 
only goes backwards.  Or it will try to and fail.



[C:\]$svn log -v -r 0:HEAD -- http://svn.darkdragon/repos/t...@2
svn: '/repos/!svn/bc/35/test' path not found



But you are asking it to track the future of that file to a place it doesn't 
exist.


I beg to differ.
I'm asking to
1. Pick the file (directory) /test at revision 2
2. Track it's changes history from revision 0 to HEAD.


But, because subversion tracks a file's history, not it's future even if you 
think you are asking it to start with rev 0 and go forward, in fact it can only 
start with the last rev and work backwards.



3. I'm fully aware that the directory does not exist in HEAD, neither I ask
Subversion to look there in first place. (literal meaning of first place)


You have asked it to pick the version of /test that existed at revision 2, then 
get the history of that item in HEAD back to rev 0 and print it out backwards. 
Or at least that's the only way it can attempt to do what you asked.



4. Quite (un)surprisingly, my intent is to actually find revision, in which
the destruction was made. Because, quite (un)surprisingly, I don't know that.


I'd like to be able to see the future too - but unfortunately, neither 
subversion nor I can do that.



Nah, it could just obey to @PEG rule. Everything will be simpler.
Unless there's absolutely no other way to track the file from @PEG, which i
doubt, since you DO can access the file by @PEG, as well as navigate back in
time easier, than forward.


It does obey @peg, and it can navigate as far as that item existed.  If you give 
it a range where that item exists at the latest rev it will show you the log of 
its history.  If you give it a range where the item doesn't exist it will tell 
you it doesn't exist because it can only work by finding the highest rev in the 
range and following history.


--
  Les Mikesell
   lesmikes...@gmail.com


Re: AW: How to find out the rev number where a file was deleted?

2010-11-28 Thread Daniel Shahaf
Stefan Sperling wrote on Sun, Nov 28, 2010 at 16:48:30 +0100:
 The real problem is that we want to be able to answer these questions
 very fast, and some design aspects work against this. For instance,
 FSFS by design does not allow modifying old revisions. So where do
 we store the copy-to information for a given p...@n?

copy-to information is immutable (never changes once created), so we
could add another hierarchy (parallel to revs/ and revprops/) in which
to store that information.  Any 'cp f...@n bar' operation would need to
create/append a file in that hierarchy.

Open question: how to organize $new_hierarchy/16/16384/** to make it
efficiently appendable and queryable (and for what queries? Iterate
all copied-to places is one).

Makes sense?

 The best idea we've had so far was using an sqlite database. But
 that's really a hack around a design that doesn't support all the
 features we want.
 
 Stefan


Re: AW: How to find out the rev number where a file was deleted?

2010-11-28 Thread Johan Corveleyn
On Sun, Nov 28, 2010 at 6:35 PM, Daniel Shahaf d...@daniel.shahaf.name wrote:
 Stefan Sperling wrote on Sun, Nov 28, 2010 at 16:48:30 +0100:
 The real problem is that we want to be able to answer these questions
 very fast, and some design aspects work against this. For instance,
 FSFS by design does not allow modifying old revisions. So where do
 we store the copy-to information for a given p...@n?

 copy-to information is immutable (never changes once created), so we
 could add another hierarchy (parallel to revs/ and revprops/) in which
 to store that information.  Any 'cp f...@n bar' operation would need to
 create/append a file in that hierarchy.

 Open question: how to organize $new_hierarchy/16/16384/** to make it
 efficiently appendable and queryable (and for what queries? Iterate
 all copied-to places is one).

 Makes sense?

I'm not sure. But there is another alternative: while we wait for
FS-NG (or another solution like you propose), one could implement the
slow algorithm within the current design. Just automating what a
user (or script) currently does when looking for this information,
i.e. a binary search.

Of course it would be slow, but it would certainly already provide
value. At the very least, it saves users a lot of time searching FAQ's
and list archives, wondering why this doesn't work, understanding the
design limitations, and then finally implementing their own script or
doing a one-time manual search.

Then, when FS-NG arrives, or someone comes up with a way to index this
information, it can be optimized.

I don't know if there would be fundamental problems with that, apart
from the fact that someone still needs to implement it of course ...

Cheers,
-- 
Johan


Re: AW: How to find out the rev number where a file was deleted?

2010-11-28 Thread Daniel Shahaf
Johan Corveleyn wrote on Sun, Nov 28, 2010 at 21:20:28 +0100:
 On Sun, Nov 28, 2010 at 6:35 PM, Daniel Shahaf d...@daniel.shahaf.name 
 wrote:
  Stefan Sperling wrote on Sun, Nov 28, 2010 at 16:48:30 +0100:
  The real problem is that we want to be able to answer these questions
  very fast, and some design aspects work against this. For instance,
  FSFS by design does not allow modifying old revisions. So where do
  we store the copy-to information for a given p...@n?
 
  copy-to information is immutable (never changes once created), so we
  could add another hierarchy (parallel to revs/ and revprops/) in which
  to store that information.  Any 'cp f...@n bar' operation would need to
  create/append a file in that hierarchy.
 
  Open question: how to organize $new_hierarchy/16/16384/** to make it
  efficiently appendable and queryable (and for what queries? Iterate
  all copied-to places is one).
 
  Makes sense?
 
 I'm not sure. But there is another alternative: while we wait for
 FS-NG (or another solution like you propose), one could implement the
 slow algorithm within the current design.

Are you advocating to implement it in the core (as an svn_fs_* API) or
as a third-party script?  The latter is certainly fine, but regarding
the former I don't see the point of adding an API that cannot be
implemented efficiently at this time.

 Just automating what a
 user (or script) currently does when looking for this information,
 i.e. a binary search.
 
 Of course it would be slow, but it would certainly already provide
 value. At the very least, it saves users a lot of time searching FAQ's
 and list archives, wondering why this doesn't work, understanding the
 design limitations, and then finally implementing their own script or
 doing a one-time manual search.
 
 Then, when FS-NG arrives, or someone comes up with a way to index this
 information, it can be optimized.
 
 I don't know if there would be fundamental problems with that, apart
 from the fact that someone still needs to implement it of course ...
 
 Cheers,
 -- 
 Johan


Re: AW: How to find out the rev number where a file was deleted?

2010-11-28 Thread Daniel Becroft
 On Sun, Nov 28, 2010 at 7:59 AM, Andrey Repin anrdae...@freemail.ruwrote:

 Greetings, Les Mikesell!

  thanks for having responded.
  Can I file a feature request for that in the issue tracker,
  what do you think?
 
  @Ryan: Of course with a peg rev I can log that single rev. But the
  rev number of that rev is that what we are looking for! To find out
  this rev number, we want to use an earlier peg rev where we know
  that the file still existed and want to add -r1:head as operative
  revs to see all revs including the rev where the file was deleted.
 

  The deletion should show in an 'svn log -v' of the directory where the
 file was
  deleted.

 That directory was deleted as well. As well, at unknown revision. Multiple
 times.

 The question is not that we can work around the issue, the question is, why
 Subversion can't do this for us? I can add my own case to this list.

 http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065dsMessageId=1850347

 I can understand that it's not easy to track deletes/copies forward, but
 tracking history from creation time to deletion(renamind implies
 deletion) time should be possible IMO.
 And this should be possible without user's guesswork. It's fairly simple to
 find correct revision range in repository with 40 commits.
 In repository with 40,000 commits things became a bit scary


Have you tried a combination of 'log -v' and grep? IMHO, that would be the
quickest to implement, and simplest to achieve.

Cheers,
Daniel B.


Svn merge crashed

2010-11-28 Thread Tina Vießmann

see log file


Process info:
Cmd line: svn merge [myURL]
Version:  1.6.12 (SlikSvn/1.6.12) WIN32, compiled Jun 22 2010, 20:45:23
Platform: Windows OS version 5.1 build 2600 Service Pack 3

Exception: ACCESS_VIOLATION

Registers:
eax=0001 ebx=00e795c8 ecx=00495cb9 edx=01a76a00 esi= edi=0008
eip=00356ab6 esp=0012f9dc ebp=00356a87 efl=00010202
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=

Stacktrace:
#1  0x00356ab6 in apr_palloc ()
#2  0x07788d57 in (unknown function)


Loaded modules:
0x0040  D:\Programmierung\SlikSvn\bin\svn.exe (1.6.12.38263, 163840 bytes)
0x7c91  C:\WINDOWS\system32\ntdll.dll (5.1.2600.5755, 757760 bytes)
0x7c80  C:\WINDOWS\system32\kernel32.dll (5.1.2600.5781, 1081344 bytes)
0x6eec  D:\Programmierung\SlikSvn\bin\SlikSvn-libintl-win32.dll (0.0.0.0, 
49152 bytes)
0x7852  
C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e\msvcr90.dll
 (9.0.30729.4148, 667648 bytes)
0x0035  D:\Programmierung\SlikSvn\bin\SlikSvn-libapr-1.dll (1.3.12.0, 
131072 bytes)
0x71a1  C:\WINDOWS\system32\ws2_32.dll (5.1.2600.5512, 94208 bytes)
0x77da  C:\WINDOWS\system32\advapi32.dll (5.1.2600.5755, 696320 bytes)
0x77e5  C:\WINDOWS\system32\rpcrt4.dll (5.1.2600.6022, 602112 bytes)
0x77fc  C:\WINDOWS\system32\secur32.dll (5.1.2600.5834, 69632 bytes)
0x77be  C:\WINDOWS\system32\msvcrt.dll (7.0.2600.5512, 360448 bytes)
0x71a0  C:\WINDOWS\system32\ws2help.dll (5.1.2600.5512, 32768 bytes)
0x719b  C:\WINDOWS\system32\mswsock.dll (5.1.2600.5625, 262144 bytes)
0x1000  D:\Programmierung\SlikSvn\bin\SlikSvn-svn_client-1.dll 
(1.6.12.38263, 184320 bytes)
0x6ee6  D:\Programmierung\SlikSvn\bin\SlikSvn-libaprutil-1.dll (1.3.9.0, 
176128 bytes)
0x003a  D:\Programmierung\SlikSvn\bin\SlikSvn-svn_delta-1.dll 
(1.6.12.38263, 90112 bytes)
0x0043  D:\Programmierung\SlikSvn\bin\SlikSvn-svn_subr-1.dll (1.6.12.38263, 
585728 bytes)
0x7e67  C:\WINDOWS\system32\shell32.dll (6.0.2900.6018, 8523776 bytes)
0x77ef  C:\WINDOWS\system32\gdi32.dll (5.1.2600.5698, 299008 bytes)
0x7e36  C:\WINDOWS\system32\user32.dll (5.1.2600.5512, 593920 bytes)
0x77f4  C:\WINDOWS\system32\shlwapi.dll (6.0.2900.5912, 483328 bytes)
0x774b  C:\WINDOWS\system32\ole32.dll (5.1.2600.6010, 1302528 bytes)
0x77a5  C:\WINDOWS\system32\crypt32.dll (5.131.2600.5512, 614400 bytes)
0x77af  C:\WINDOWS\system32\msasn1.dll (5.1.2600.5875, 73728 bytes)
0x003e  D:\Programmierung\SlikSvn\bin\SlikSvn-svn_diff-1.dll (1.6.12.38263, 
53248 bytes)
0x004c  D:\Programmierung\SlikSvn\bin\SlikSvn-svn_ra-1.dll (1.6.12.38263, 
430080 bytes)
0x0054  D:\Programmierung\SlikSvn\bin\SlikSvn-svn_repos-1.dll 
(1.6.12.38263, 135168 bytes)
0x0058  D:\Programmierung\SlikSvn\bin\SlikSvn-svn_fs-1.dll (1.6.12.38263, 
208896 bytes)
0x1300  D:\Programmierung\SlikSvn\bin\SlikSvn-DB44-20-win32.dll (4.0.4.20, 
757760 bytes)
0x7848  
C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e\msvcp90.dll
 (9.0.30729.4148, 581632 bytes)
0x005e  D:\Programmierung\SlikSvn\bin\SlikSvn-LIBEAY32.dll (1.0.0.1, 
1200128 bytes)
0x0072  D:\Programmierung\SlikSvn\bin\SlikSvn-SSLEAY32.dll (1.0.0.1, 249856 
bytes)
0x0077  D:\Programmierung\SlikSvn\bin\SlikSvn-Sasl21-23-win32.dll 
(2.1.23.0, 139264 bytes)
0x007b  D:\Programmierung\SlikSvn\bin\SlikSvn-svn_wc-1.dll (1.6.12.38263, 
192512 bytes)
0x7633  C:\WINDOWS\system32\imm32.dll (5.1.2600.5512, 118784 bytes)
0x773a  
C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll
 (6.0.2900.6028, 1060864 bytes)
0x5d45  C:\WINDOWS\system32\comctl32.dll (5.82.2900.6028, 630784 bytes)
0x71f1  C:\WINDOWS\system32\security.dll (5.1.2600.5512, 16384 bytes)
0x77c4  C:\WINDOWS\system32\msv1_0.dll (5.1.2600.5876, 151552 bytes)
0x7674  C:\WINDOWS\system32\cryptdll.dll (5.1.2600.5512, 49152 bytes)
0x76d2  C:\WINDOWS\system32\iphlpapi.dll (5.1.2600.5512, 102400 bytes)
0x6800  C:\WINDOWS\system32\rsaenh.dll (5.1.2600.5507, 221184 bytes)
0x76ee  C:\WINDOWS\system32\dnsapi.dll (5.1.2600.5625, 159744 bytes)
0x76f8  C:\WINDOWS\system32\rasadhlp.dll (5.1.2600.5512, 24576 bytes)
0x6671  C:\WINDOWS\system32\hnetcfg.dll (5.1.2600.5512, 364544 bytes)
0x719f  C:\WINDOWS\system32\wshtcpip.dll (5.1.2600.5512, 32768 bytes)
0x5b0f  C:\WINDOWS\system32\uxtheme.dll (6.0.2900.5512, 229376 bytes)
0x7662  C:\WINDOWS\system32\userenv.dll (5.1.2600.5512, 745472 bytes)
0x77bd  C:\WINDOWS\system32\version.dll (5.1.2600.5512, 32768 bytes)
0x597d  C:\WINDOWS\system32\netapi32.dll (5.1.2600.5694, 348160 bytes)
0x01fd  C:\WINDOWS\system32\xpsp2res.dll (5.1.2600.5512, 2985984 bytes)
0x7658  C:\WINDOWS\system32\cryptnet.dll (5.131.2600.5512, 77824 bytes)
0x76bb  C:\WINDOWS\system32\psapi.dll (5.1.2600.5512, 45056 bytes)
0x7224  C:\WINDOWS\system32\sensapi.dll