Edgewall Software

Ticket #552 (closed defect: fixed)

Opened 3 years ago

Last modified 16 months ago

Bitten svn:checkout does not handle failure to check out externals

Reported by: matthew.davey@… Owned by:
Priority: major Milestone: 0.6.1
Component: Recipe commands Version: dev
Keywords: RHEL5, svn:checkout Cc:
Operating System: Linux

Description

In our repository we are using svn:externals to check out dependent libraries to build our platform. I am using Bitten 0.6dev and Subversion "svn, version 1.5.5 (r34862)" on "Linux machine 2.6.18-128.1.6.el5 #1 SMP"

The disk appears to have run out of space during this procedure and svn reported the following:

svn: warning: Error handling externals definition for 'externals/dependent-lib':
svn: warning: Network connection closed unexpectedly

The svn:checkout part of our recipe does not detect this warning and Bitten reports the checkout passed, even though the dependent external is missing.

Can this warning be detected and fail the entire Bitten run? Is there an extra option that could be provided to the checkout step to detect warnings and abort?

This is the checkout part of our recipe:

<step	id="checkout">
<svn:checkout	url="svn+ssh://server/svnroot/platform" 	path="${path}" 	revision="${revision}"/>
</step>

Attachments

Change History

Changed 3 years ago by Matthew Davey <matthew.davey@…>

I have now updated my subversion client to svn, version 1.6.6 (r40053) but still have the same issue

Changed 3 years ago by osimons

Could you perhaps make this small change and try again?

  • bitten/build/svntools.py

    a b  
    8282    :param username: a username of the repository 
    8383    :param password: a password of the repository 
    8484    """ 
    85     args = ['checkout'] 
     85    args = ['checkout', '--non-interactive'] 
    8686    if revision: 
    8787        args += ['-r', revision] 
    8888    if path: 

It adds --non-interactive to the arguments, which the Subversion docs claim in some circumstances will just fail the call instead of writing messages/warnings/prompts and existing normally.

Changed 3 years ago by hodgestar

  • milestone changed from 0.6.1 to 0.6

Changed 3 years ago by Neil Muller

AFAICS, --non-interactive will only effect how subversion prompts, and won't change the how it handles either warnings or errors.

Changed 3 years ago by anatoly techtonik <techtonik@…>

Sent mail to consult with Subversion folks upstream  http://thread.gmane.org/gmane.comp.version-control.subversion.user/97641

Changed 3 years ago by Neil Muller

Testing here with subversion 1.6.9, --non-interactive doesn't cause svn to fail when the external repo is unavailable.

Options that occur to me are:

a) Parsing the checkout output for warning messages. This will arguably also require adding some sort of "fail builds on svn warnings" config option.

b) Add an additional command (svn:checkcheckout for example) that can be used to test that the checkout is sane. I don't have any good ideas for how to do this check, though, as the commands to query the checkout (svn log, etc.) will simply ignore any missed externals.

Changed 3 years ago by anatoly techtonik <techtonik@…>

Changed 3 years ago by hodgestar

  • milestone changed from 0.6 to 0.6.1

I'm moving this back out to 0.6.1 since I don't think it should hold up the 0.6b3 release. It's looking likely that our fix will be just to tell users to upgrade their subversion client but we'll see what happens on the subversion side.

Changed 3 years ago by anatoly techtonik <techtonik@…>

Patch happens on subversion side. In testing.

Changed 3 years ago by anatoly techtonik <techtonik@…>

Fixed in 1.7.0 Need to wait for release to test.

Changed 16 months ago by hodgestar

  • status changed from new to closed
  • resolution set to fixed

Subversion 1.7.0 was released on 11 Oct 2011 so I'm closing this bug.

Add/Change #552 (Bitten svn:checkout does not handle failure to check out externals)

Author


E-mail address and user name can be saved in the Preferences.


Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
 
Note: See TracTickets for help on using tickets.