Git SVN: Difference between revisions
Jump to navigation
Jump to search
Line 13: | Line 13: | ||
** [https://git.wiki.kernel.org/images-git/7/78/Git-svn-cheatsheet.pdf git-svn cheatsheet] |
** [https://git.wiki.kernel.org/images-git/7/78/Git-svn-cheatsheet.pdf git-svn cheatsheet] |
||
** [https://git.wiki.kernel.org/index.php/GitTips#git_svn git-svn tips] |
** [https://git.wiki.kernel.org/index.php/GitTips#git_svn git-svn tips] |
||
== Configuration == |
|||
My default <tt>.git/config</tt> file on Linux: |
|||
<source lang="bash"> |
|||
[user] |
|||
name = ... |
|||
email = ... |
|||
[core] |
|||
repositoryformatversion = 0 |
|||
filemode = true |
|||
bare = false |
|||
logallrefupdates = true |
|||
ignorecase = true |
|||
autocrlf = false |
|||
whitespace = -blank-at-eol, -space-before-tab,-blank-at-eof |
|||
[apply] |
|||
ignorewhitespace = change |
|||
[svn-remote "svn"] |
|||
url = ... |
|||
fetch = ... |
|||
branches = ... |
|||
tags = ... |
|||
</source> |
|||
My default <tt>.git/config</tt> file on Cygwin: |
|||
<source lang="bash"> |
|||
[user] |
|||
name = ... |
|||
email = ... |
|||
[core] |
|||
repositoryformatversion = 0 |
|||
filemode = false |
|||
bare = false |
|||
logallrefupdates = true |
|||
ignorecase = true |
|||
autocrlf = false |
|||
whitespace = -blank-at-eol, -space-before-tab,-blank-at-eof |
|||
[apply] |
|||
ignorewhitespace = change |
|||
[svn-remote "svn"] |
|||
url = https://www.collabnet.nxp.com/svn/atop |
|||
fetch = trunk:refs/remotes/trunk |
|||
branches = branches/*:refs/remotes/* |
|||
tags = tags/*:refs/remotes/tags/* |
|||
</source> |
|||
== Workflow == |
== Workflow == |
Revision as of 09:38, 5 August 2011
This page is dedicated to Subversion integration in Git
References
- git-svn (1)
- Using a Subversion server on Yobi!
- Git and Subversion on Pro Git
- svn2git, Migrating a SVN repo to Git Repo
- Some handy tools at InterfacesFrontendsAndTools:
- git-sv, svneverever
- Git - SVN Crash Course (old version)
Configuration
My default .git/config file on Linux:
[user]
name = ...
email = ...
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
autocrlf = false
whitespace = -blank-at-eol, -space-before-tab,-blank-at-eof
[apply]
ignorewhitespace = change
[svn-remote "svn"]
url = ...
fetch = ...
branches = ...
tags = ...
My default .git/config file on Cygwin:
[user]
name = ...
email = ...
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
ignorecase = true
autocrlf = false
whitespace = -blank-at-eol, -space-before-tab,-blank-at-eof
[apply]
ignorewhitespace = change
[svn-remote "svn"]
url = https://www.collabnet.nxp.com/svn/atop
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/*
tags = tags/*:refs/remotes/tags/*
Workflow
Get a clone of subversion repository with:
# git: git clone =>
# svn: svn checkout =>
git svn clone https://www.mysvn.org/svn/project -T trunk -b branches -t tags --username='USER'
git svn clone https://www.mysvn.org/svn/project --stdlayout --username='USER' # Identical
# Clean / compress git DB if necessary...
git gc
Fetch all changes from SVN repo:
# git: git fetch =>
git svn fetch
Fetch and merge all changes from SVN repo:
# git: git pull =>
# svn: svn update =>
git svn rebase
git svn rebase -l # Only rebase against last fetched commit from upstream SVN
- In case of conflicts (see [1]):
- You are on a (no-branch) branch (with
git status
showing a .dotest file you can ignore) - Use the usual
git rebase --abort
(to bail out),git rebase --continue
(solved conflict),git rebase --skip
(no-op patch)
- You are on a (no-branch) branch (with
Send local changes to SVN repo:
# git: git push =>
git svn dcommit
Annotate changes in a file:
# git: git blame =>
# svn: svn annotate/blame =>
git svn blame fullpath # Only accept full path! (from project rootdir)
git blame file