Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Jan 2013 10:40:33 -0500
From:      Greg Larkin <glarkin@FreeBSD.org>
To:        Xyne <xyne@archlinux.ca>
Cc:        Peter Vereshagin <peter@vereshagin.org>, freebsd-questions@freebsd.org
Subject:   Re: svn-export Re: svn bdb checkout?
Message-ID:  <5102A771.1080704@FreeBSD.org>
In-Reply-To: <20130124221636.307dca09@archlinux.ca>
References:  <20130116185832.GB8524@external.screwed.box> <50F6FD37.5060309@gmail.com> <20130116193534.GC8524@external.screwed.box> <50F704CE.3010904@gmail.com> <20130116200754.GD8524@external.screwed.box> <50F70C60.4000108@FreeBSD.org> <20130116205533.GE8524@external.screwed.box> <20130117045431.GB5392@external.screwed.box> <20130119052245.004da49b@archlinux.ca> <51004B62.5090305@FreeBSD.org> <20130124221636.307dca09@archlinux.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 1/24/13 5:16 PM, Xyne wrote:
> Greg Larkin wrote:
> 
>> Hi Xyne,
>> 
>> Thanks for turning that around so quickly, and I am doing some
>> testing here with the idea to incorporate svn-export into the
>> FreeBSD ports tree.
>> 
>> I've run into a couple of problems that I hope you can take a
>> look at it:
>> 
>> - - Changesets containing directory or file deletions cause the
>> script to exit.  Here is an example where I fetched the FreeBSD
>> ports tree at a particular revision, then attempted to update to
>> the latest revision:
>> 
>> # python3 svn-export --revision-file foo2.dat 
>> http://svn.freebsd.org/head/ports-mgmt ports-mgmt Determining
>> current revision. Current revision is 310894. Determining changes
>> [310000:310894]. 16 new/modified files, 5 deletions Traceback
>> (most recent call last): File "svn-export", line 407, in
>> <module> svn.main() File "svn-export", line 380, in main 
>> self.remove_old_files(deleted) File "svn-export", line 302, in
>> remove_old_files os.unlink(path) PermissionError: [Errno 1]
>> Operation not permitted: 'ports-mgmt/pkg/files'
>> 
>> - - I can't get the --to-script option to work if there are any 
>> file/directory deletions in the changeset.  It looks like the
>> actual deletion operations are attempted (like above) even when
>> the - --to-script option is selected.
>> 
>> Let me know if you need any other information.
>> 
>> Thank you, Greg
> 
> 
> Hi,
> 
> I think I have fixed both errors in svn-export-2013.1.24, along
> with another directory-related error that I discovered while
> debugging (attempts to cat new directories in incremental exports
> instead of recursing them). Please try again and let me know if it
> works.
> 
> If not, please post steps to reproduce the error with a publicly
> accessible repo. I was unable to access the ports-mgmt repos in
> your example.

Hi Xyne,

I mistyped the repository URL in my previous email, and I just
captured a session that displays an error similar to the one above.
Note that I pre-seeded the environment with a rev.dat file containing
the string "310000".  I did that to simulate an incremental fetch, as
you'll see here:

# python3 svn-export -r 310000
http://svn.freebsd.org/ports/head/ports-mgmt ports-mgmt
Exporting new repository.
Exported revision 310000
# python3 svn-export --revision-file rev.dat
http://svn.freebsd.org/ports/head/ports-mgmt ports-mgmt
Determining current revision.
Current revision is 310981.
Determining changes [310000:310981].
16 new/modified files, 5 deletions
Traceback (most recent call last):
  File "svn-export", line 459, in <module>
    svn.main()
  File "svn-export", line 432, in main
    self.remove_old_files(deleted)
  File "svn-export", line 310, in remove_old_files
    os.unlink(path)
PermissionError: [Errno 1] Operation not permitted: 'ports-mgmt/pkg/files'
# exit

As far as I can tell, svn-export attempts to remove a directory before
the file contained within that directory.  It seems like
PermissionError isn't the best error code for Python to throw in that
case, since it appears to mask the root problem.

Can you re-order the deletes so all files are deleted first, then
directories are deleted in a bottom-up sequence?  I think that will
solve this problem.

> 
> Incidentally, if anyone is looking at the code for svn-export, feel
> free to suggest a better way to incrementally export new
> subdirectories (see the "get_new_files()" method).

I'll take a look at that soon to see if there are any possible
optimizations.

> 
> Incidentally, my release scripts do not leave old source archives
> on the server for very long after a new release and I tend to
> update often when I can. If you need me to increase the shelf life
> of old archives to prevent 404's, let me know (give me a reasonable
> interval and I will update my scripts). In the future I may switch
> to posting my private Git repos, but I tend to rewrite history and
> I know that really irks people.
> 
> Regards, Xyne
> 

Once we create a port for svn-export, we typically point to the
original download site in the port Makefile.  It's a good idea for the
port maintainer to find a mirror site and include that too, but if
not, all distro files are eventually mirrored to the FreeBSD cluster.

Ideally, the source distros remain in place forever or at least until
the FreeBSD port is updated to the latest version, but if that's not
possible, I can mirror the files too.

Thank you,
Greg

- -- 
Greg Larkin

http://www.FreeBSD.org/           - The Power To Serve
http://www.sourcehosting.net/     - Ready. Set. Code.
http://twitter.com/cpucycle/      - Follow you, follow me
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.13 (Darwin)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iEYEARECAAYFAlECp3EACgkQ0sRouByUApDo2gCfRLq1/7Cl40y7GDShUOamQTMr
aqQAn0IPLS/nkcyjOadEA3cKzuoDc0Wp
=3JN4
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5102A771.1080704>