Migration to SVN, confused about deleting old files

I have a StarTeam repo that I’m trying to migrate to SVN. Unfortunately the repo is HUGE, so I can’t use any of the polarion scripts, etc. I’m resorting to checking out snapshots of each release in StarTeam and then manually adding/committing them to SVN.

However, I’m confused about what to do for old files. In StarTeam, we had to move deleted files to an “obsolete” folder since the purge command removed all copies of the file. I know that I don’t need to do that in SVN, but how does SVN deal with files which have been deleted/are missing?

  • C# example of downloading GitHub private repo programmatically
  • How can Windows file and folder shortcuts be created via C#.NET code?
  • Hosting a subset of boost used in project on github
  • .gitignore and Visual Studio project: Ignore bin/Debug directory but not bin/Release directory
  • Does the libgit2 project or anyone else provide sample code to demonstrate the various libgit2 functions?
  • Why does C# designer-generated code (like Form1.designer.cs) play havoc with Subversion?
  • Say I have three files in the following structure:

    trunk/
        Src/
            A.cpp
            B.cpp
            C.cpp
    

    If from one release to another I deleted “C.cpp”, do I just need to commit all of src for the deletion to be reflected in the SVN repo?

    Likewise, if I deleteed “C.cpp” but added “D.cpp”, I would need to call add on all of “src/” before committing. Would that cause any problems with detecting and deleting the missing files? There are too many of them to go through manually and delete every one individually.

    As a separate question, is there a reason why it takes tortoiseSVN almost 3 hours to detect which files are changed before I can add/commit? All I see is the “Please wait…” message in the dialog box, and it takes FOREVER.

    Thanks!

  • How to push Tag to Bitbucket Git Repository in Bamboo from Cake build task?
  • build .net application in Jenkins using MSBuild
  • Adding resource file to VC6 dll
  • How to exclude files with spaces in the path in Sonar?
  • How to check if file is under source control in SharpSvn?
  • How to use Git with “multiple (thousands) projects” in one-repo?
  • One Solution collect form web for “Migration to SVN, confused about deleting old files”

    Any change you make to the repo needs a commit, so yes after doing svn delete you need to svn commit. Similarly when you add files, that’s a change that needs to be committed. In both cases it’s possible to undo the add and delete without commiting.

    In terms of adding and removing files in one transaction, again that “just works”, you’d effectively issue:

    svn delete C.cpp
    svn add D.cpp
    svn commit
    

    If you want to recover a deleted file, then you can just recover the file from an earlier revision of the svn repo, then recommit (see also What is the correct way to restore a deleted file from SVN?).

    The main thing you must remember though when deleting files: you must delete it using subversion tools (i.e. from the command line as svn delete or using Delete within TortoiseSVN. Just deleting it using del, rm, or a file manager like windows explorer will have SVN see the file as “missing” and not “deleted“, and a commit of the repo will not commit the delete; thus the next time you update your working copy, the missing files will be restored. Thus you use subversion to delete the file so subversion knows that you do actually want it deleted.

    For your last question — what version of SVN and how big is the repo (in terms of file-count). Essentially T-SVN has to walk the tree and check each file against the repo-version to see it it’s changed. As of SVN 1.7, the working copy format changed with a lot of metadata being held in the database, and improvements to the storage of pristine copies (i.e., what the file looked like when it came out of svn) means that it’s faster than it was. If you aren’t using 1.7, then it’s worth checking out. Also, if you have a large repo but only work in a small part of it then consider using sparse checkouts to reduce the size of your local working copy. See this answer to Checkout one file from Subversion for a brief overview or sparse checkouts.

    Git Baby is a git and github fan, let's start git clone.