简体   繁体   中英

Disconnected Version Control

My team works in disconnected mode. ie They develop the applications and use SVN inside the company network to manage versioning for the code.

I am sitting in customer's office with no direct access to my company's network from customer machines. I maintain my own SVN where I checkin the code drop received from my team daily and also make changes to code.

I face two issues in this mode of operation.

  1. If my team deletes / renames some files, and I simply paste the new code received from my team over my working copy.. the deleted files remain in my working copy.
  2. To avoid the issue one.. I asked them to send me patch file. Patch file worked with better success rate but it failed to address Binary files. So if my team adds new images / xls templates etc into the codebase, I don't get them via patch file. 2.

Thus, I have started feeling that two disconnected SVN repositories is not the right solution for my situation.

  • Have you guys been in this situation before?
  • What did you do?
  • Is there something in SVN that can help me for this?
  • OR is there another version control system that would help me get over this issue?
  • If yes, can you point me to relevant commands in the VCS?

Free alternatives are preferred.

I would couvert the SVN server to aa true DVCS like git. Even without direct connection, changes between can be propagated using patches submitted by email (this works for binary files). See man git-format-patches and man git-am . And also man git-bundle if you do not plan reading the patches.

If converting the central server is not an option, you can still ask someone on the SVN network to use git-svn before generating the patches he sends to you, or after applying the patches you send back to him. (Killing SVN would of course be a better long term solution.)

You should look into git-svn. The basic idea is that instead of having a local svn working copy, you have a local git repository. You can make multiple local commits, then when you're done, push those local commits into the remote svn repository. It allows you to work completely disconnected from the central svn repository, but still allows you to use version control in your day to day work.

Have a look at bzr-svn as mentioned by @elevener, or, for a git equivalent, use git-svn

EDIT:

I was under the impression that you sometimes have access to the company network where you can push/pull your changes. If that isn't true, then I guess manual patching is the only way to go (since you pretty much have no access to the company's SVN server.)

Does your company provide access to internal network by some means (SSH? VPN?) ? If so, perhaps you can use SSH tunneling or VPN to access the SVN server.

If you are in a different network and don't have access to your VCS, only manual patching will work. Even in DVCS (git or mercurial), you have to be in the same network to push or pull from the remote repo. So, as far as I know, manual patching is the only solution in your case.

Any comments from the SVN experts?

Haven't used it myself but AFAIK you can use Bazaar. It's a Distributed Version Control that is able use SVN as a central repository.

See bzr-svn .

Have a look at git-bundle for the sneakernet transfer step. It should allow you to package up a bundle of changes for manual transfer across the VPN between the networks.

I've been looking at a the exchange problem myself (see my various SO questions) and I think they can be made to work, though you may need to use that company laptop ;-)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM