`
flyisland
  • 浏览: 83497 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[笔记]通过svk,离线使用subversion

阅读更多

 

我的需求很简单,就是:
1、希望将源代码放到Google Code上;
2、在没有连接网络的时候,依然可以commit

 

在网上查询一下,发现这其实是对“分布式版本控制 ”的需求。因为Google Code用的是subversion,而我自己最熟悉的客户端工具也是subversion,所以我最终选择了SVK

 

SVK与subversion的关系密切,它是采用subverion respository作为存储后端,所以可以直接用利用subclipse, tortoiseSVN来操纵svk respository,这也是我所希望的。SVK最重要的作用就是可以将本地的respository与远程的respository进行同步,这样平时我可以只是在本地respository进行编程,多次本次提交之后,在适当的时候将变更同步到google code上。

 

具体的做法是:

 

1、为远程respository建立本地镜像。

 

svk mirror //mirror/myproject https://myproject.googlecode.com/svn/
这个语句的作用是将两个respository关联起来

 

svk sync //mirror/myproject
这个语句的作用是将指定的镜像目录与远程respository同步,这是在建立镜像关系后第一个要运行的命令。

 

2、建立本地分支。 虽然//mirror/myproject位于本机,但是不建议对//mirror/myproject目录直接操作。主要的原因有两个:
1)对mirror修改的一切,都会自动同步到远程respository。如果网络不通,对镜像目录的改变就会失败,这就失去了离线提交的特性。
2)我用subversion客户端工具对mirror直接操作后,结果在sync的时候得到了“is not a mirrored path”的错误,在网上查询发现这个问题已经被讨论过

 

Basically any dealing with mirrored paths with a non-svk tool (i.e. svn) is going to cause issues due to some internal properties that svk uses.

 

因此必须建立自己的分支:
svk copy -p -m "Make local repo" //mirror/myproject //local/myproject

 

建立本地分之后,则可以随意用subversion对//local/myproject进行操作了。这个时候其实你一共有三个存放代码的地点:1)远程googel code;2)mirror目录;3)本地分支。你的工作则是在本地分支上面进行。需要知道:

1)svk提供smerge命令,将一个分支的变化合并到另外一个分支
2)对镜像目录的任何改变,都会自动实时同步到远程respository
3)svk sync的命令用于同步镜像目录

 

3、将本地分支的变化提交到远程respository。 通过上面的知识,你就知道只需要执行以下命令,就会知道更新远程的google code。

 

svk smerget -I //local/myproject //mirror/myproject

 

一般情况下你是在对本地分支进行多次提交后才去执行这个命令,如果不使用“-I”(--incremental)参数,svk只会将本地分支的当前状况合并到//mirro/中,这样镜像目录会丢失你之前每次提交的信息(例如注释等)。

 

4、将远程respository的变化更新到本地。 由于我目前是一个人玩,就不存在这个动作,但是根据上面的知识,我们知道需要两个命令

 

svk sync //mirror/myproject
svk smerget -I //mirror/myproject //local/myproject

 

遗留问题:
我有时候会在proxy环境下工作,不清楚如何对svk进行proxy设置。在SVKFAQ 上发现说svk还不支持proxy,不过可以通过subversion,但我就是找不到具体应该怎么弄。在网络上发问 ,也没有人理睬,更加诡异的是死活无法加入svk maillist。

 

参考资料:
1. Version Control with SVK
2. Google Code: Getting started with svk
3. Explaining the SVK Workflow

 

分享到:
评论

相关推荐

    mac下svn与svk整合

    在Mac操作系统中,整合SVN(Subversion)与SVK是一项常见的任务,特别是对于开发者而言,这能够提供灵活的版本控制和备份方案。SVN是一个成熟的版本控制系统,而SVK则是一个分布式版本控制系统,它利用SVN的仓库作为...

    SVK的版本控制Version Control with SVK

    本书记录了SVK,它是使用健壮的Subversion文件系统构建的去中心化版本控制系统。 SVK支持存储库镜像,断开连接的操作,对历史敏感的合并,并与其他版本控制系统集成。

    SVK物业财务部经理职责.docx

    【SVK物业财务部经理职责】的文档详细阐述了该职位的主要任务和责任,以下是针对这些内容的关键知识点的深入解析: 1. **财务管理原则**:财务部经理需要遵循健全的财务管理原则,这意味着他们需要确保公司的财务...

    SVK型组装式整体齿轮压缩机与G_省略_齿轮增速式压缩机特点性能分析对比_宁云柱

    SVN版本管理 项目管理

    - **开源软件**: 包括SCCS、RCS、CVS、GNU Arch、Subversion(SVN)、SVK等。其中,Subversion因其强大的功能和广泛的社区支持成为最流行的版本控制系统之一。 #### 四、Subversion的历史与发展 - **起源**: 2000年...

    浅谈版本控制系統SVN

    不过,有一些工具如SVK,是基于Subversion构建的分布式版本控制系统,它允许开发者在没有网络连接的情况下进行工作,并且可以与现有的CVS仓库兼容。 Subversion的系统架构包括客户端和服务器两部分。客户端通常用于...

    Git和Repo扫盲——如何取得Android源代码

    Git 和其他分布式版本控制系统(如 BitKeeper、Mercurial、GNU Arch、Bazaar、Darcs、SVK、Monotone 等)不同于集中式版本控制系统(如 Subversion、CVS),在集中式版本控制系统中只有一个仓库,许多个工作目录,而...

    SVKKit使用环境的部署

    相信很多人都用过多人版本管理工具,SVN是其中很流行的一种。而常见的都是基于可视化操作的,不能整个到项目中去。 本资料就是将版本管理工具整合到项目中的一个方案。 在这个资料的基础上,我实现了我们网站中的...

    SVK斯洛伐克共和国社会经济发展指标数据1960-2022GDP人口就业教科文财政收支贸易碳排放等.xlsx

    (指标翻译成了中文,还有指标中英文说明等相关的对照表页签,方便使用) 数据来源:WB世界银行世界发展指标WDI 数据范围:1960-2022 数据指标:每个地区1486个指标,涵盖社会经济发展各行各业的方方面面: 指标说明...

    3Svkp1.32汉化脱壳免杀版

    逆向工程师通过特定工具和技术来去除这层保护,揭示原始的程序逻辑。 2. **程序脱壳**:脱壳是逆向工程的一个关键步骤,通常用于绕过软件的保护机制。"3Svkp1.32汉化脱壳"表明这个版本的软件已经去除了原有的壳程序...

    ISO25178-2-2012参数说明.pdf

    * Svk:突出谷部深度突出谷部表示表面所涂抹用于提高润滑性的液体所滞留的区域。 * Smr1:分离突出峰部与中心部的负载面积率 * Smr2:分离突出谷部与中心部的负载面积率 形态参数 * Spd:峰顶点密度表示单位面积的...

    连接器规格参数归类.pdf

    最后,SMD连接器通过Outer Lock方式提高了安装效率,防止了Wafer倒插,无铅处理满足环保要求。它与线对线的RMD连接器兼容,使得在相同电路中板对线和线对线连接器的使用更加灵活。 这些连接器各有特色,适用于不同...

    muRata角度传感器中文资料

    根据提供的文件信息,下面是关于muRata角度传感器中文资料的知识点总结: ...注意:由于文档内容是通过OCR扫描技术提取的,可能会存在识别错误或漏字的情况,理解内容时需注意通顺并核实相关信息。

    Diffuse-开源

    漫反射是用于比较和合并文本文件的图形工具。 它可以从Bazaar,CVS,Darcs,Git,Mercurial,Monotone,RCS,Subversion和SVK存储库中检索文件进行比较。

    详解Angular 4.x NgTemplateOutlet

    NgTemplateOutlet 指令的使用方式非常灵活,通过绑定上下文对象的方式,可以轻松地实现视图的动态插入。例如,在以下示例中,我们使用 NgTemplateOutlet 指令来插入三个不同的模板视图,每个视图都具有不同的上下文...

    循环气压缩机防喘振控制.doc

    在天利高新技术公司的醇酮厂,C41101 SVK1-H 型循环气压缩机就是通过 TRICON 系统实现防喘振控制的实例。 工艺流程方面,醇酮装置利用环己烷与贫氧空气中的氧气反应生成醇酮产品。循环气压缩机组将反应尾气回收再...

    ISO-25178-2-2012.pdf

    同时,通过定义精确的表面纹理参数,制造企业可以更好地控制产品质量,提高产品性能。 对于工程师和技术人员而言,掌握ISO-25178-2:2012标准中的表面纹理参数对于进行表面分析、设计和制造决策至关重要。了解并正确...

    Buggytestautomation

    Buggytest自动化 项目描述 带有Javascript的赛普拉斯框架用于自动化资源 。...使用Test Runner运行Cypress cd / project文件夹npx cypress打开 in the cypress Test Runner, select Chrome as the brow

Global site tag (gtag.js) - Google Analytics