-->

Instructions on using TortoiseGit to interact with

2019-03-09 00:13发布

问题:

I've been using TortoiseSVN on Windows for years with local filesystem repositories for my own projects. I'm planning to start collaborating with a friend on one of the projects, and will be shifting the repository to my own website. I've read a lot of "git beats SVN!" posts over the last couple years, and figured I ought to at least see what the fuss was about. Some research turned up the "git svn" command, and that TortoiseGit claims to have some level of git-svn support. I like the idea of keeping the SVN repository, and doing some local commits or branches with git before committing them to the repository. The "shelve" command also sounds useful.

Unfortunately, while there's a number of CLI git-svn tutorials, there's nothing for TortoiseGit (which admittedly seems to be still in early development). As a result, I'm having problems trying to figure out what workflow I need to get these pieces to cooperate.

I have an SVN repository in D:\Projects\repositories\MyProject. I created D:\Projects\temp\gittest, and tried to do a TortoiseGit "Git Clone" of the repository. From there, I've had issues trying to indicate the location of the trunk/branches/tags folders (which are just the standard layout in my repository). I was only able to get useful results when I left those unchecked. When I did seem to get the git repository started correctly, I was able to make some changes and do a couple git commits, but then had problems doing an SVN DCommit.

So, I'm hoping someone out there can provide a reasonably detailed set of instructions on how to correctly use TortoiseGit with an existing SVN repository (with the repository on either the local filesystem or on a remote server). No "don't use SVN!" responses, please - I'm interested in learning how to get these two pieces to work together. If you feel TortoiseGit's SVN support isn't mature enough to make this work, that would also be useful information.

Thanks!

回答1:

  1. Create a directory
  2. right click, "Git Clone..."
  3. Enable"From SVN Repository" and select all further settings


回答2:

Update: I stand by my answer to the question as written ("I'm planning to start collaborating with a friend..."), but if you do want/need to keep Subversion I rather liked my git-svn workflow.

The only reason git-svn exists is to allow the use of Git alongside an existing Subversion infrastructure. Since you essentially have no infrastructure, there is absolutely no reason not to just switch to Git completely. git-svn is better than svn, but should be avoided if at all possible.

I would strongly urge you to git svn clone -s --no-metadata <path_to_svn> then forget you ever had svn.



回答3:

This is probably obvious now, but tortoisegit now has built-in support for git-svn.



回答4:

It has been noted before - just putting it here as a proper answer :)

TortoiseGit now has baked-in support for SVN, so it should work fine.



回答5:

I used msysgit from http://msysgit.github.com/ so that I can pull from the subversion repository which requires accepting security certificate and other command prompt options. Once the code has been pulled I have been able to use TortoiseGit for most of the functionality (except for the svn push AFAIR)



回答6:

You can try to use TortoiseGit with no integrated SVN support rather as a usual Git client. To make this work you can install SubGit into SVN repository.

Below I've listed some basic instructions how to setup SubGit:

$ subgit configure SVN_REPOS
# Adjust SVN_REPOS/conf/subgit.conf to specify your branches and tags
# Adjust SVN_REPOS/conf/authors.txt to specify git & svn authors mapping
$ subgit install SVN_REPOS
...
$ INSTALLATION SUCCESSFUL

After installation you can find Git repository at SVN_REPOS/.git and work with it as with normal Git repository. Every git push performed by TortoiseGit triggers pre-receive and post-receive hooks that replicate incoming modifications into SVN repository.

For more details please refer to SubGit documentation and git-svn comparison page.

Starting from version 2.0 (not yet released at the moment of posting) SubGit allows to synchronize Subversion and Git repositories located on different hosts.

SubGit is a commercial tool, but it is free for repositories with up to 10 committers and for open-source and academic projects.

Disclaimer: I'm one of SubGit developers.



回答7:

May be you can put your projects to github which supports an svn access. So you can continue to use TortoiseSVN and collaborate with others. On the other hand you can use things like sourceforge etc. to collaborate via SVN instead of git. BTW why not using git svn clone URLOfTheSVNRepos and later do git commits instead.



回答8:

Just for the record: SourceTree for Windows is planing on supporting git-svn (and hgsubversion) from version 1.4 onwards. The corresponding issue is SRCTREEWIN-119.