History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: CIB-1009
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: jason
Reporter: Edwin Vane
Votes: 1
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
Pulse

Personal Builds don't work with SVN externals

Created: 14/Mar/07 07:33 PM   Updated: 21/Mar/07 02:01 PM
Component/s: None
Affects Version/s: 1.2.19
Fix Version/s: 1.2.20

Environment:
Windows XP
Using the SVN 1.4 workaround from CIB-906


 Description  « Hide
I've been using personal builds successfully until my project recently had external dependencies added to. An entire subtree of the root build directory is now marked as external. When I try to perform personal builds I now get errors like:

UNSUPPORTED <directory marked as svn:external>
UNSUPPORTED <directory marked as svn:external>
...
Error: Working copy is not in a consistent state.

 All   Comments   Change History      Sort Order:
sdt - 15/Mar/07 01:33 AM
Note this snippet from CIB-734:

"Note also there are some features that will still not work. In particular, you will not be able to submit personal builds. The primary reason for this is that externals do not participate in commits in the normal way. For commit purposes, they are all separate working copies. Atomicity and consistency are not preserved when using externals, making replicating your working copy state accurately difficult."

jason - 15/Mar/07 02:01 PM
Yep, as described in CIB-734, our support for externals is not complete, and in some cases never can be fully completed due to limitations in the way externals work. That said, there may be some circumstances where we can get externals to work with personal builds, or at least work as well as they do given the way they work in svn itself.

The key problem, as mentioned, is replicating the state of your working copy on the Pulse server. Externals make this difficult because they do not gurantee a consistent view. However, if you are only using externals with fixed revisions (i.e. you specify the revision to fetch in the external property), then a checkout on the Pulse side is guaranteed to get the same revision as you have. There may be other difficulties, as externals are only half-baked in some respects. In any case it would be interesting to know how your externals are configured, and maybe we can remove some of the limitations.

sdt - 15/Mar/07 02:04 PM
In Edwin's case, the externals are not going to affect the build he cares about. So it really doesn't matter what they are. There is a dependency of those externals on the main repository, but not the other way around.

jason - 15/Mar/07 02:07 PM
I see. So in that case we could add an option to ignore the externals for the purposes of personal builds. They will still be checked out on the Pulse side, but the personal build client will not bother checking them for changes etc.

sdt - 15/Mar/07 02:18 PM
I think that would be an easy fix for this situation. We'd appreciate this a lot!

jason - 21/Mar/07 02:01 PM
Added a new boolean property "svn.allow.externals" to personal build configuration. If set to "true", externals are allowed in personal builds. Changes to externals are even picked up. The caveat is that an update on the Pulse server is not guaranteed to get the same version as on the client (unless a fixed revision is used). I think this is to be expected, given the nature of externals. Refer to change 3144.