FeatureRequest: Improved svn:externals handling on Merge

215 views
Skip to first unread message

Marcel Hesselbarth

unread,
Jul 20, 2012, 11:16:11 AM7/20/12
to us...@tortoisesvn.tigris.org
Hi developers,

searching the mailing group seems like no posted my problem before, even if Google presents several hits.

The basic problem I have is I have a Project with svn:externals defined pointing into the same SVN. When I now make a commit the files changed inside the svn:externals folders are included - so all works great.

If I now try to merge these commit into a other checkout the changes inside the svn:externals are not merged. I need to do a separate merge at the svn:externals folders. Doing so works fine, but why I have to do this manually?
The merge of svn:externals is not done automatically independent of if the folder at the merge target is an linked svn:externals folder or a real folder. Or what I'm doing wrong?

Now some additional information to the use case:
Of cause I want to use these feature to share common code through svn:externals. I know google will tell me this is no good idea, but unfortunately don't come up with a better solution for organizing the source code. The only idea for avoiding svn:externals I found up to now is to build a common used dll first and embed these dll. Unfortunately this is not possible, as some parts of the shared source code need to be individually compiled into several dll's from the shared and the not shared areas.

So what do you think about this feature? I think it is the missing part at using svn:externals for efficient source code sharing...

With kind regards,
Marcel Hesselbarth

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2991964

To unsubscribe from this discussion, e-mail: [users-un...@tortoisesvn.tigris.org].

Stefan Küng

unread,
Jul 20, 2012, 2:24:34 PM7/20/12
to us...@tortoisesvn.tigris.org
First of all, this would have to be done in the svn library. So you'd
have to ask for this on the svn users mailing list.

But:
this will never work. An external is not connected with the original or
merge target working copy. The only thing that gets merged is the
svn:externals property. Once that's merged, it points to the merged
target, and that's the target that's used.

Stefan


--
___
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest Interface to (Sub)Version Control
/_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2991992

Marcel Hesselbarth

unread,
Jul 23, 2012, 5:26:48 AM7/23/12
to us...@tortoisesvn.tigris.org
In fact this is working well, if I do 2 separate merges. So the merge itself done by snv library works well, and I think it is a question of the client to trigger the second merge operation.

So one more example to explain it in detail:
I have the following svn structure:
svn://svn/test/main/trunc
svn:external Propery: svn://svn/test/sub/trunc sub
File: Mainfile.txt
svn://svn/test/sub/trunc Project
File: Subfile.txt

Now I make a branch and set the svn:external Propery:
svn://svn/test/main/branch1
svn:external Propery: svn://svn/test/sub/branch1 sub
File: Mainfile.txt
svn://svn/test/sub/branch1 Project
File: Subfile.txt


On a Checkout of main Project this will result in the following file structures:
mainTrunc
| Mainfile.txt
| sub
| | Subfile.txt
mainBranch
| Mainfile.txt
| sub
| | Subfile.txt


If I make changes at Mainfile.txt and Subfile.txt at main in one commit with version 123. To merge these changes to the branch I have to do the following:
1. Go to mainBranch folder an merge svn://svn/test/main/trunc version 123
2. Go to mainBranch/sub folder and merge svn://svn/test/sub/trunc version 123
All information required for the 2. merge of the externals folder is already known by the tortoise client. It knows there are files at the svn://svn/test/sub/trunc folder included at these commit and it knows these files are loyally stored at mainBranch/sub.

And you are right the second merge can be done either by the tortoise client or the svn library. As the commit of externals is not recommended by snv and is helpfully done by the tortoise client I think the feature of merging of these external commits belongs to area of the tortoise client as well.

With kind regards,
Marcel Hesselbarth

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2992396

Marcel Hesselbarth

unread,
Jul 27, 2012, 10:59:15 AM7/27/12
to us...@tortoisesvn.tigris.org
Hm.. no reply...
So I'm sorry You are just in a bad mood.
How can I help you out?

But being honest, I thing these Feature is important. As externals are silently included into commits it is easily overseen that a commit includes externals at merging. So if these externals are not merged or at least warned while merging they will be overseen -> an great source for new bugs...

With best regards,
Marcel Hesselbarth

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2993442

Stefan Küng

unread,
Jul 27, 2012, 11:33:35 AM7/27/12
to us...@tortoisesvn.tigris.org
On 27.07.2012 16:59, Marcel Hesselbarth wrote:
> Hm.. no reply... So I'm sorry You are just in a bad mood. How can I
> help you out?

I don't have a bad mood, but I'm getting there.

>
> But being honest, I thing these Feature is important. As externals
> are silently included into commits it is easily overseen that a
> commit includes externals at merging. So if these externals are not
> merged or at least warned while merging they will be overseen -> an
> great source for new bugs...

What about
"First of all, this would have to be done in the svn library. So you'd
have to ask for this on the svn users mailing list."
didn't you understand?
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2991992

Stefan


--
___
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest Interface to (Sub)Version Control
/_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2993446
Reply all
Reply to author
Forward
0 new messages