SmartGit as SVN Bridge
This page provides an introduction to SmartGit from an SVN users perspective and shows how the SVN workflows can be performed using SmartGit:
- Check Out: cloning an SVN repository
- Working Copy: the Git working tree
- Commit (part 1): Commit locally
- Log: Git commits and version history
- Commit (part 2): Push
- Update: Pulling changes
- Switch: changing the current branch
- Merge (part 1): Merging release branches
- Merge (part 2): Rebasing feature branches
- Copy (WC-URL, URL-URL): creating tags and branches
Check Out: cloning an SVN repository
With Git, you do not check out a certain revision, but you clone an entire "repository". For SVN repositories, you will get the complete version history for the specific URL of your project (either a complete Subversion repository or a sub-directory of such a repository which contains your project, including trunk
-, branches
- and tags
-directory).
This may sound like a huge amount of data, but the initial phase of a SmartGit clone is as quick as an svn checkout
. Git is efficient in storing version history: it's not unusual that a Subversion working copy (one single revision) and the complete Git clone (of all revisions) are about the same size.
Working Copy: the Git working tree
Once the initial phase of Check Out has completed, SmartGit will open your fully-functional Git repository in the Project window. The Git repository consists of a working treeand the entire version history (stored in the .git
-subdirectory) of your repository.
Similar to SVN, SmartGit provides several commands to alter your working tree. Most of them are located in the Local- and Branch-menu. Read more ...
Commit (part 1): Commit locally
To commit your changes, use Local|Commit. This is a purely local operation and will create a Git commit in your repository. It does not yet create any new revision in the SVN repository, nor does it contact the SVN server at all.
Log: Git commits and version history
The Log window shows the commits of your local Git repository: commits which are ancestors of remote branches, like svn/trunk
, are already present in the SVN repository. Commits which are just ancestors of local branches, like trunk
, are only present in your local Git repository.
The Log will only be present, once the Check Out has been finished and all revisions have been fetched.
Commit (part 2): Push
To publish your changes, as svn commit
does immediately, you have to Push your local commits back to the SVN repository by using Remote|Push (Project window).
The results of a Push show up in the Log window: remote branches become updated to the corresponding local branches because the commits are now present in the SVN repository.
Until you have pushed your commits, you have all freedom to rearrange them:
Update: Pulling changes
To fetch the latest revisions of other users to your local Git repository, use Remote|Pull (Project window).
If you have local commits, you may either Pull (and hence Rebase) your changes onto the latest SVN commits, or you may just Fetch these commits and have your local branch diverge from the remote branch. In the latter case, you need to Rebase your local commits onto the latest SVN commits manually.
Switch: changing the current branch
Contrary to SVN, branches and tags are native concepts of Git. Read more ...
SmartGit maps branches/
and tags/
directory of your SVN repository to Git branches and tags accordingly. Read more ...
To switch (svn switch
) from one branch to another, you may use Local|Check Out or the Switch menu item from the popup menu in the Branches view (Project window).
Merge (part 1): Merging release branches
Release branches are merged from time to time to the main development line (usually trunk
). In SmartGit, use Branch|Merge to perform such a merge (Project and Log window). This will result in a merge commit which is a core concept of Git. When pushing, it will be translated back to the SVN svn:mergeinfo
property.
Merge (part 2): Rebasing feature branches
When using SVN, maintaining features branches requires merging from the main development line from time to time and finally performing a reintegrating merge to get the feature back into the main development line. With Git there is a more effective mechanism for that, called "Rebase": Rebase will rewrite your feature branch commits onto the latest commits of your main code base.
Rebase can be used for locally as well as for remotely managed feature branches. It will also be used to rewrite your local commits onto the latest SVN commits when Pulling.
Copy (WC-URL, URL-URL): creating tags and branches
You can create a new branch or tag simply by using Branch|Add Branch or Branch|Add Tag on a specific commit (Log window). For example, branch feature
and tagmilestone-1
. Read more ...
As for commits, both, branches and tags, are just locally present in your Git repository after adding them. To create the branch in the SVN repository as well, use Local|Push(project window) for the current branch or Push from the Branches-view context menu (Project window) for all other branches. This will result in a new SVN revision, for which branches/feature
will be added and marked as copied from trunk
. The corresponding Git branch svn/branches/feature
shows up in the Log window immediately after the Push:
Local tags do not have a remote counterpart in the Git repository. They can simply be pushed to SVN, either immediately when creating them (Add Tag dialog) or later from the Branches-view context menu (Project window).
SmartGit as SVN Bridge的更多相关文章
- Ubuntu 及衍生版本用户如何安装 SmartGit/HG
http://www.linuxidc.com/Linux/2014-06/102621.htm Ubuntu 及衍生版本用户如何安装 SmartGit/HG 6.0.0 [日期:2014-06-03 ...
- 变色龙安装程序 Chameleon Install 2.2 svn 2281发布
变色龙安装程序 Chameleon Install 2.2 svn 2281发布 1.更好的支持10.9 Mavericks2.更新ATi.nVidia显卡支持列表3.添加新的 CPU Model I ...
- iOS开发——开发实战篇&版本控制SVN和Git使用详解
版本控制SVN和Git使用详解 公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的! -----------------svn--------- ...
- SmartGit STUDY 2
The Index The Index is an intermediate cache for preparing a commit. With SmartGit, you can make hea ...
- SmartGit STUDY
Git Concepts This section helps you to get started with Git and gives you an understanding of the fu ...
- 【转】Install SmartGit via PPA in Ubuntu 13.10/13.04/12.04/Linux Mint
原文网址:http://ubuntuhandbook.org/index.php/2013/09/install-smartgit-via-ppa-ubuntu-linux-mint/ This tu ...
- SmartGit/HG
SmartGit/HG 是一款开放源代码的.跨平台的.支持 Git 和 Mercurial 的 SVN 图形客户端,可运行在Windows.Linux 和 MAC OS X 系统上.可用的最新版本 S ...
- 【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)
写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 服务器规划 IP 主机名 节点 操作 ...
- 三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境
写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 文章和搭建环境所需要的yml文件已收 ...
随机推荐
- mapreduce运用
测试环境:192.168.1.55 mongo 192.168.1.55:30001show dbsuse gwgps 测试目标,求出两个班的总数,人数,平均分数等.可以根据不同的业务需求,定制map ...
- mysql join表连接
1.表连接,就是将两个表合并起来,被合并的表的记录要通过中间字段,一一匹配起来左边的表的记录,形成一张临时的合并的表,并且每条记录的值都是两张表一一准确对应的 实例 尝试以下实例: root@host ...
- 利用crontab定时重启centos
起因 前一段买了aliyun的ecs的最低配版,大概配置是centos 7,512内存,20G空间. 部署了几个站点,虽然网站已经做了一定的静态化,但还是会出现内存不够用的情况,这个时候,系统会停掉一 ...
- 最有用的Linux命令行使用技巧集锦
最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在 ...
- js 定时跳转, 格式化字符串时间
效果 1.js中将一字符串表示的系统时间转换为Date时间对象 //js中将一串字符串转换为date类型,主要是先过滤字符,然后分割开 function parseToDate(strTime) { ...
- php YAF
Yaf 的特点: 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销. 所有的框架类, 不需要编译, 在PHP启动的时候加载, 并常驻内存. 更短的内存周转周期, 提高内存利用 ...
- 欢迎大家提问Android技术及职业生涯等问题
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 最近有些时间,但QQ群问的问题比较多,不能一一解答,如果有价值 ...
- HBASE的读写以及client API
一:读写思想 1.系统表 hbase:namespace 存储hbase中所有的namespace的信息 hbase:meta rowkey:hbase中所有表的region的名称 column:re ...
- zepto源码--qsa--学习笔记
zepto内部选择器qsa方法的实现. 简述实现原理: 通过判断传入的参数类型: 如果是'#id',则使用getElementById(id)来获取元素,并且将结果包装成数组形式: 如果是'.clas ...
- 自己diy一个jquery分页插件
js基础学习过程中,期间经历换工作的各种面试,很多面试官问过:有没有写过jquery插件?等类似问题. 就个人而言,关于jquery插件的文章确实看过不少,但是一直没有动手写一个,一是不想在目前学习j ...