Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Correct workflow for managing a private Subversion fork:

There is an open source project I would like to fork. It has a public SVN repository from which I would like to check out the source, clone it into my private repository, and begin making changes. If possible I would like to be able to merge changes from the upstream repository in the future. So far I've been able to do it like so:

  1. Create a folder for this project in my own repository.
  2. Check out this empty folder.
  3. Check out the original project into another location.
  4. Delete all .svn subdirectories in this new location.
  5. Copy the files into the working copy of my private repository, commit once, then begin making changes.

This works but it seems ugly and I'm not at all convinced that merge will work correctly. Is there a better way?

EDIT: To preclude replies of "just submit a patch", suffice it to say this is for a feature I need in my application but because it deliberately breaks compatibility with the existing functionality, it will not be accepted upstream.

like image 470
Dan Avatar asked May 04 '11 14:05

Dan


People also ask

What is forking workflow in Git?

Forking is a git clone operation executed on a server copy of a projects repo. A Forking Workflow is often used in conjunction with a Git hosting service like Bitbucket. A high-level example of a Forking Workflow is: You want to contribute to an open source library hosted at bitbucket.org/userA/open-project.

Can you fork a private repository?

If you have access to a private repository and the owner permits forking, you can fork the repository to your personal account, or an organization on GitHub Team where you have repository creation permissions. You cannot fork a private repository to an organization using GitHub Free.

Which is the first step in a typical Git workflow?

The first step is to stage the changes to commit using the git add command. You can add multiple files at a single time, separating their name by space. The last step is to commit the changes using the git commit command.


1 Answers

I'm going to recommend that you look at Git.

Yes, the project is using Subversion, but Git has a handy little trick of pulling a revision out of Subversion, allowing you to use Git for your own personal versioning, and then committing your changes back into Subversion.

That would allow you to remain in sync with Subversion, and still take full advantage of a revision control system.

Take a look at git svn.

If you don't want to learn Git (you might as well since most open source projects are moving to it), you can take a look at svk.

like image 63
David W. Avatar answered Sep 28 '22 19:09

David W.