krezus
krezus

Reputation: 1451

Create and apply "patch" between two different SVN Server?

Basically, There are two different Svn server and each one of them used by different groups are working on the same project. I am trying to find out a way to merge changes using svn's functionality.

In order to make Test: I have created two repository (file:///D:/FirstRepo and file:///D:/SecondRepo) in my local and added same file(test.txt) like a project. After changed the file in first repository, I created a patch and apply the patch to other repository. It does not work properly. If these two files are not synchronized (files' contents are completely same), the patch that created comes empty.

So, what way should be selected to achieve this goal? Is my way good approach and Is it developable?

Thanks in advance.

Note:

Upvotes: 1

Views: 126

Answers (1)

Chris
Chris

Reputation: 2304

-- In response to your last comment.

Oh, well if that's the case, then yeah I definitely have a solution for you. I thought you had something different in mind.

Even if your teams don't communicate, you can still host the code under the same repository and even if you host the two teams under the same repository, you can give the groups access/block access down to specific directories and they will never see the others.

Subversion supports Path Based Authorization where you basically take a set of groups, and you give them permissions to the directories as they are required.

So let's say you have two groups: team-one and team-two, and these two teams, as you say have access to only these specific directories. If you setup authz file authorization, you can explicitly set permissions on all of your directories in your repository, therefore, you will only need one repository.

[groups]
admins = krezus
team-one = chris, john
team-two = jim, ted

[RepoName:/MyProject]
@admins = rw

[RepoName:/MyProject/trunk]
@team-one = rw

[RepoName:/MyProject/branches]
@team-two = rw

[RepoName:/MyProject/tags]
@team-one = rw
@team-two = r

In this quick example, you're the admin. Therefore, you have access to everything under RepoName/MyProject. team-one being the main development team, they have read-write access to the trunk and tags. team-two won't have access to any of these files under trunk.

However, during your dev cycle, you periodically make "releases" of your code for team-two to use. You can then make a tag of your trunk at a certain revision and copy it to the tags directory. team-two can read the tag and they can pull changes into any of their code under branches, which no one has access to except them.

The would cover pretty much everything you're trying to accomplish:

  • Keeping directories locked down for certain users
  • Merging changes from one project to the next

Upvotes: 1

Related Questions