版本的要求
务必保证 git-core 和 git-svn 的版本大于 1.5.3,这里使用的版本为 1.5.4.2-1~bpo40+2。
svn 仓库
我们这里以 Google Code Hosting 提供的 svn 仓库为原型虚拟了一个:
用户名和密码分别为: zhang, ftpw
建立工作目录
新建目录(1),并将该目录作为 git-svn 的工作目录(2),用户名为 zhang。获取 svn 仓库内的数据(3),此时需要输入密码 ftpw。查看获取到的文件列表(4)。
示例1 修改数据后提交至 svn 仓库(理想情况)
提交/签入(commit/check in),这是使用工具操作版本管理系统的基本动作。
1$ echo "有一天我梦到自己在考试" >> README
2$ echo "醒来的时候我果然在考试" >> TODO
3$ git-commit -a -m "小笑话"
Created commit 8fb8ee7: 小笑话
2 files changed, 2 insertions(+), 0 deletions(-)
4$ git-svn rebase
5$ git-svn dcommit
Committing to https://virtual.googlecode.com/svn/trunk
...
M README
M TODO
Committed r10
M TODO
M README
r10 = 7123a9eb252c31a2fcbd1c2908642fa6794fe687 (git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svn
修改若干文件(1, 2),此后,您可以像使用 svn status/svn diff 一样使用 git-status/git-diff
来查看修改情况。确定修改完成后提交至本地仓库(3)。在正式提 交给 svn 仓库之前(5),从 svn
仓库获取最新的数据(4)对您的提交动作来说非常重要。 这里假设的理想情况是在您正式提交给 svn 仓库之前,svn 仓库没有发生更新。
示例2 修改数据后提交至 svn 仓库(发生冲突)
在提交/签入(commit/check in)过程中,发生了合并冲突(CONFLICT)时的基本动作。
1$ vi debian/changelog
...
2$ git-commit -a -m "发布一个新版本"
Created commit 934b74c: 发布一个新版本
1 files changed, 6 insertions(+), 0 deletions(-)
3$ git-svn rebase
M debian/changelog
r11 = ae2199620a1e66130e12d03bd48a66c8edddc195 (git-svn)
First, rewinding head to replay your work on top of it...
HEAD is now at ae21996... New Upstream Released
Applying 发布一个新版本
error: patch failed: debian/changelog:1
error: debian/changelog: patch does not apply
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merged debian/changelog
CONFLICT (content): Merge conflict in debian/changelog
Failed to merge in the changes.
Patch failed at 0001.
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".
rebase refs/remotes/git-svn: command returned error: 1
4$ vi debian/changelog
...
5$ git-commit -a -m "冲突解决后发布的最新版本"
Created commit b899d8b: 冲突解决后发布的最新版本
1 files changed, 2 insertions(+), 1 deletions(-)
6$ rm -rf .dotest
7$ git-svn rebase
Current branch HEAD is up to date.
8$ git-svn dcommit
Committing to https://virtual.googlecode.com/svn/trunk
...
M debian/changelog
Committed r12
M debian/changelog
r12 = cc5b21aaf77a2952b4a3fa74a80cbdd826f28d92 (git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svn
将平日修改的文件(1),提交到本地 git 仓库(2)。在提交至 svn 仓库前,先获取 svn 仓库的最新数据(3)。此时发现
debian/changelog 文件在 svn 仓库中已被更新,由于我 们平日也对 debian/changelog
文件作过修改,这就导致该文件出现了合并冲突。手工修 改该文件解决冲突(4),然后重新提交至本地 git 仓库(5)。准备重新提交至 svn 仓库
(8),保险起见,我们再一次获取 svn 仓库的最新数据(7),为此要先删除因刚才(3)操作 失败带来的临时目录
.dotest(6)。(或许存在更好的解决 .dotest 目录的方法。)
示例3 修改提交至本地 git 仓库时的留言
有时候我们希望能在 git-commit 之后修改当时 -m 参数后面的留言,如下例中对拼写错 误的修改
1$ touch foo
2$ git-add foo
3$ git-commit -a -m "New flie"
4$ git-commit --amend
5$ git-rebase
Current branch HEAD is up to date.
6$ git-svn dcommit
Committing to https://virtual.googlecode.com/svn/trunk
...
A foo
Committed r13
A foo
r13 = 9f9db8db023de576f8ac63c993619218febbb74d (git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svn
7$ mkdir /tmp/test && cd /tmp/test
8$ svn co https://virtual.googlecode.com/svn/trunk
. --username=zhang
9$ svn log
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
r13 | zhang | 2008-03-09 22:08:37 +0800 (日, 09 3月 2008) | 2 lines
New file
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
r12 | zhang | 2008-03-09 21:07:24 +0800 (日, 09 3月 2008) | 2 lines
冲突解决后发布的最新版本
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
r11 | s5unty | 2008-03-09 20:56:39 +0800 (日, 09 3月 2008) | 1 line
New Upstream Released
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
r10 | zhang| 2008-03-09 20:44:57 +0800 (日, 09 3月 2008) | 2 lines
小笑话
...
新建一个文件 foo(1)并添加至本地 git 仓库(2),然后提交(3)。此时我们发现刚才提交 的留言中错把 file 拼写成了 flie,现在进行修改(4)。然后提交给 svn 仓库并观察日 志(5-9)。
分享到:
相关推荐
git-svn-helpers 是一个命令行工具的集合,它极大地简化了 git for svn 存储库的使用。 它的主要目标是在现有的 svn checkout 之后设置一个本地 git 存储库,“无需动脑筋”。 它还解决了使用单个 git-svn 存储库...
主要介绍了vscode添加GIT和SVN的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
git-prov 可以在找到Git-Prov API规范 GET / repos / organizations / {organization} 获取到组织拥有的所有存储库的重定向列表。... "https://git-prov.herokuapp.com/repos/owner/Apache/sling-old-svn
这篇指南以大家在SVN中已经广为熟悉使用的集中式工作流作为起点,循序渐进地演进到其它高效的分布式工作流,还介绍了如何配合使用便利的PullRequest功能,体系地讲解了各种工作流的应用。行文中实践原则和操作示例...
- [springcloud(七):配置中心svn示例和refresh](http://www.ityouknow.com/springcloud/2017/05/23/springcloud-config-svn-refresh.html) - [springcloud(八):配置中心服务化和高可用]...
spring-cloud-config-svn-refresh:配置中心svn版本示例,客户端refresh版本示例 spring-cloud-config-eureka:配置中心服务化和高可用代码示例 spring-cloud-config-eureka-bus:配置中心和消息总线示例(配置中心...
svn-all-fast-export aka svn2git 该项目包含将svn信息库(服务器端,而不是签出)转换为一个或多个git信息库所需的所有工具。 这是用于将KDE的Subversion转换为多个Git存储库的工具。 您可以在找到更多描述和用法...
spring-cloud-config-svn-refresh:配置中心svn版本示例,客户端refresh版本示例 spring-cloud-config-eureka:配置中心服务化和高可用代码示例 spring-cloud-config-eureka-bus:配置中心和消息总线示例(配置中心...
这是本人自己在项目中使用过后的总结,及遇到的问题处理方法,以及git和svn的对比说明,希望给大家可以带来帮助;(备注:下载后对里面不明白的地方可以留言,我会进行解答)
几种常见的版本管理系列教程,包含软件,示例代码,视频教程,适合初学者入门使用
例如: svn co https://github.com/flutter/samples/trunk/provider_shopper您也可以使用浅表克隆来下载最新版本: git clone --depth 1 https://github.com/flutter/samples.git有兴趣贡献吗? 请参阅!有什么问题...
日间交易者安装要在运行 CentOS 6.4 的 EC2 实例上安装 Daytrader,您将: 安装 Docker 启动daytrader-mysql容器启动daytrader容器初始化mysql数据库部署应用安装 Docker 以 root 身份运行以下命令以在 CentOS 6 上...
这是一个将 svn 或 git log 保存到 mongodb 或 elasticsearch 的 python 脚本。 要求 Python 2.7 弹性搜索或 mongodb elasticsearch python 客户端或 pymongo 怎么跑 导出日志有 2 个步骤。 1.导出日志svn或git ...
通过比较两个分支的svn / git日志来构建基于提交的更改日志。 用法 cp config.json.dist config.json node index.js oldBranch newBreanch 配置示例 当前支持按史诗进行2种不同类型的提交分组。 成功与否很大程度上...
对于如何创建一个Laravel项目,相信对新接触Laravel的朋友并不存在太多的问题,但是今天我们要来看...本文的示例环境是Ubuntu 16.04 LTS,Windows的朋友可以在Git bash下进行操作。 为了便于理解和操作,我会在本地系统
这将在每个 Subversion 存储库上执行svn update ,并在每个 Git 存储库上执行git fetch --all ,并在可能的情况下执行git merge --ff-only 。 或者,如果您只想更新 Git 存储库,您可以使用fetch-all ( fa ),并将...
配置中心git版本示例:配置中心svn版本示例,客户端refresh版本示例:配置中心服务化和高可用代码示例:配置中心和消息总线示例(配置中心终结版)gateway-service-zuul:Spring Cloud Zuul使用初级篇 网关 均衡负载...
│ ├── git.png │ ├── hg.png │ ├── svn.svg │ └── vcs.txt ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── scripts │ ├── install.sh │ └── uninstall...
演示ACE的功能:ACE服务的使用Cache服务(缓存)Store服务(文件存储)Log服务(收集日志在ACE控制台上查看)Mail服务(发送邮件)ACE环境配置的读取WebSocket使用代码如何使用,请直接看示例代码实现。获取工程代码...