史上最全SVN使用总结,建议先收藏再看

发布于:2024-10-24 编辑:匿名 来源:网络

最近在公司又开始玩SVN了。这里给大家总结一下。

基本上在公司里,要么使用git,要么使用SVN进行代码管理。作为一名程序员,这些工具你还是需要熟悉SVN的使用。

本期孙明寿给大家分享一些SVN相关的知识点。只要能用就可以了。

如果你不知道,可以查看相关文档。 SVN官网:SVN源代码:它是一个开源的版本控制系统,这意味着Subversion管理随时间变化的数据。

该数据被放置在中央存储库中。该存档很像常规文件服务器,但它会记住每个文件更改。

通过这种方式,您可以将文件恢复到旧版本,或浏览文件的更改历史记录。主要功能 (1) 目录版本控制 CVS 只能跟踪单个文件的历史记录,但 Subversion 实现了一个“虚拟”版本控制文件系统,可以跟踪整个目录随时间的变化。

目录和文件都可以进行版本控制。 (2)真实版本历史 由于CVS限制了文件版本记录,CVS不支持可能发生在文件上但会影响目录内容的操作,例如复制和重命名。

另外,在 CVS 中,您无法用同名但不继承旧版本历史记录或根本不相关的文件替换系统中已包含的文件。在 Subversion 中,您可以添加、删除、复制和重命名文件或目录。

所有新添加的文件都以新的干净版本开始。 (3)自动提交提交动作。

要么整个??文件更新到存档,要么更新不完整。这允许开发人员以逻辑间隔构建和提交更改,从而防止部分提交成功时出现问题。

(4) 版本控制中包含的元数据。每个文件和目录都附加有一组属性关键字并与属性值相关联。

您可以创建并存储任何您想要的键/值对。属性随着时间的推移而版本化,就像文件内容一样。

(5)选择不同的网络层。 Subversion有一个抽象的档案访问概念,它允许人们轻松地实现新的网络机制。

Subversion 可以作为扩展模块嵌入到 Apache HTTP 服务器中。这为Subversion提供了非常先进的稳定性和互操作能力,此外还提供了许多重要的功能:例如身份验证、授权、在线压缩和文件库浏览等。

还有一个轻量级独立 Subversion 服务器,它使用自定义通信协议,并且可以通过 ssh 轻松建立隧道。 (6) 一致的数据处理方法 Subversion 使用二进制差异算法来表示文件差异。

它平等地对待文本(人类可以理解的)和二进制文件(人类无法理解的)。两种类型的文件均以压缩形式同等地存储在存档中,并且文件差异通过网络双向传输。

(7) 有效的分支和标签 分支和标签的消耗不一定要与项目的规模成正比。 Subversion 创建分支和标签的方式就是使用类似于硬链接的方法复制项目。

所以这些操作只会花费很少的时间并且需要固定的时间。 (8) HackabilitySubversion没有任何历史包袱;它主要是一组具有明确定义的 API 的共享 C 库。

这使得 Subversion 易于其他应用程序和编程语言维护和使用。基本概念 存储库(源代码库):统一存放源代码的地方。

签出(提取):当您手头没有源代码时,您需要从存储库中签出一份副本。 Commit(提交):当你修改了代码后,需要Commit到repository更新(update):当你签出了一个源代码后,Update它,就可以将其与Repository上的源代码同步,并且代码你的手中将会有最新的变化。

日常的开发流程其实就是这样的。 (假设你已经签出并已经工作了几天):更新(获取最新代码)-->进行自己的更改并调试成功-->提交(每个人都可以看到你的更改)。

如果两个程序员同时修改同一个文件,SVN可以合并两个程序员的修改。事实上,SVN以行为单位管理源代码。

也就是说,只要两个程序员不修改同一行程序,SVN就会自动合并两次修改。如果在同一行,SVN会提示文件冲突,需要手动确认。

SVN安装下载地址:该操作用于创建新版本库。在大多数情况下,此操作只会执行一次。

当您创建新存储库时,版本控制系统将要求您提供一些信息来标识该存储库,例如创建它的位置和存储库的名称。签出 签出操作用于从存储库创建工作副本。

工作副本是开发人员的私有工作区,可以在其中修改内容然后将其提交到存储库。 Update 顾名思义,更新操作用于更新存储库。

此操作将工作副本与存储库同步。由于存储库由整个团队共享,因此当其他人提交更改时,您的工作副本将过期。

我们假设汤姆和杰瑞是一个项目的两个开发人员。他们同时从存储库中检查了最新版本并开始工作。

至此,工作副本与存储库完全同步。然后,Jerry 高效地完成了他的工作,并将更改提交到存储库。

此时 Tom 的工作副本已过期。更新操作将从存储库中提取 Jerry 的最新更改并更新 Tom 的工作副本。

执行更改 签出后,您可以执行许多操作来执行更改。编辑是最常用的操作。

您可以编辑现有文件,例如添加/删除文件。您可以添加文件/目录。

但是,这些添加的文件目录不会立即成为存储库的一部分。相反,它们将被添加到挂起的更改列表中,并且在执行提交操作之前不会成为存储库的一部分。

同样,您可以删除文件/目录。删除操作会立即从工作副本中删除文件,但实际删除文件只是将其添加到挂起的更改列表中,直到执行提交操作后才会真正删除。

重命名操作可以更改文件/目录的名称。 “移动”操作用于将文件/目录从存储库中的一个位置移动到另一个位置。

查看更改 当您签出或更新工作副本时,您的工作副本将与存储库完全同步。但是,当您对工作副本进行一些修改时,您的工作副本将比存储库更新。

在提交之前检查您的更改是一个很好的做法。状态操作列出了工作副本中所做的更改。

正如我们之前提到的,您对工作副本所做的任何更改都会成为待处理更改列表的一部分。 Status 操作用于查看此待定更改列表。

Status 操作仅提供更改列表,但不提供更改的详细信息。您可以使用 diff 操作来查看这些更改的详细信息。

修复错误 假设您对工作副本进行了很多更改,但现在您不想要这些更改,那么恢复操作将帮助您。恢复操作会重置对工作副本的修改。

它可以重置一个或多个文件/目录。当然它也可以重置整个工作副本。

在这种情况下,恢复操作将销毁挂起的更改列表并将工作副本恢复到其原始状态。解决冲突 合并期间可能会发生冲突。

合并操作会自动处理可以安全合并的内容。其他人将被视为冲突。

例如,“hello.c”文件在一个分支上被修改,并在另一分支上被删除。这种情况需要手动处理。

Resolve操作用于帮助用户发现冲突并告诉存储库如何处理这些冲突。提交更改 提交操作用于将更改从工作副本移至存储库。

此操作会修改存储库的内容,其他开发人员可以通过更新其工作副本来查看这些更改。在提交之前,您必须将文件/目录添加到挂起的更改列表中。

将提交的更改记录在列表中。提交时,我们通常会提供注释来解释进行更改的原因。

此评论也将成为存储库历史记录的一部分。提交是一个原子操作,这意味着要么提交成功,要么提交失败并回滚。

用户不会看到成功提交的一半。 SVN创建仓库并进入/opt/svn/sunjiaoshou01/conf目录,修改默认配置文件配置,包括svnserve.conf、passwd、authz,配置相关用户和权限。

1. svn 服务配置文件 svnserve.conf svn 服务配置文件是存储库目录中的文件conf/svnserve.conf。该文件仅包含 [general] 配置部分。

代码语言:javascript 复制 【通用】 anon-access = noneauth-access = writepassword-db =/home/svn/passwdauthz-db =/home/svn/authzrealm = tikuanon-access:控制非认证用户访问的权限存储库,取值范围为“write”、“read”和“none”。即“write”表示可读可写,“read”表示只读,“none”表示无访问权限,默认值为:读。

auth-access:控制经过身份验证的用户访问存储库的权限。可能的值范围是“写”、“读”和“无”。

即“write”表示可读可写,“read”表示只读,“none”表示无访问权限,默认值为:write。 authz-db:权限配置文件名,通过该文件可以实现基于路径的访问控制。

除非指定绝对路径,否则文件位置是相对于conf 目录的。默认值:authz。

realm:指定仓库的认证域,即登录时提示的认证域名。如果两个仓库的认证域相同,建议使用相同的用户名和密码数据文件。

默认值:一个UUID(Universal Unique IDentifier,全局唯一标识符)。 2、用户名密码文件passwd 用户名密码文件由svnserve.conf的配置项password-db指定,默认为conf目录下的passwd。

该文件仅包含 [users] 配置部分。 [users]配置节的配置行格式如下: 代码语言:javascript 复制 [users] admin=adminthinker=,权限配置文件 权限配置文件由svnserve.conf的配置项authz-db指定,默认是conf目录下的authz。

配置文件由 [groups] 配置部分和几个存储库路径权限部分组成。 [groups]配置节中的配置行格式如下: 代码语言:javascript 复制 [groups]g_admin = admin, thinker [admintools:/]@g_admin= rw*=[test:/home/thinker]thinker = rw *= rSVN check 运行后,我们创建了仓库sunjiaoshou01,URL为用户user01拥有读写权限。

我们可以通过这个URL查看客户端上的存储库。svn checkout --username=user01 上述命令将产生以下结果: 代码语言:javascript 复制 root@sunjiaoshou:~/svn# svn checkout sunjiaoshou01/trunkA sunjiaoshou01/分支A sunjiaohsou01 /tagsCheckedout revision 1.签出成功后,会在当前目录下生成sunjiaoshou01的副本目录。

查看勾选内容 代码语言:javascript copy root@sunjiaoshou:~/svn# ll sunjiaoshou01/total 24drwxr-xr-x 6 root root Jul:19./drwxr-xr-x 3 root root Jul:10../drwxr - xr-x 2 根根 7 月:19 个分支/drwxr-xr-x 4 根根 7 月:19.svn/drwxr-xr-x 2 根根 7 月:19 个标签/drwxr-xr-x 2 根根 7 月:19 干线/SVN解决冲突 版本冲突的原因: 假设用户A和B都更新了文件kingtuns.txt,版本号为 。用户A修改完成后向服务器提交kingtuns.txt。

此时提交成功。此时kingtuns.txt文件的版本号发生了变化。

同时,用户B对kingtuns.txt文件进行版本号修改。修改完成后,提交到服务器时,提交失败,因为修改不是在最新版本上进行的。

对于SVN提交操作,我们查看了版本库sunjiaoshou01,对应的目录放在/home/user01/sunjiaoshou01。接下来,我们对该库进行版本控制。

查看工作副本中的状态码 语言:javascript copy root@sunjiaoshou:~/svn/sunjiaoshou01/trunk# svn statusA readme 此时readme状态为A,说明该文件已成功加入版本控制。为了将readme存储在存储库中,请使用commit -m加上注释信息来提交。

如果省略 -m 选项,SVN 将打开一个多行文本编辑器供您输入提交消息。代码语言:javascript copy root@sunjiaoshou:~/svn/sunjiaoshou01/trunk# svn commit -m "SVN readme."添加readme传输文件数据.提交修订版本8.svn commit -m "SVN readme."当我们回滚SVN版本时如果想放弃对文件的修改,可以使用SVN revert命令。

代码语言: javascript copy root@sunjiaoshou:~/svn/sunjiaoshou01/trunk# svn revert readme Reverted'readme' revert 操作后,readme 文件恢复到原来的状态。恢复操作不仅可以恢复单个文件,还可以恢复整个目录。

如果我们想恢复已经提交的版本怎么办?要消除旧版本,我们必须撤消旧版本中的所有更改并提交新版本。此操作称为反向合并。

首先找到当前版本库,现在是版本22。我们要撤销回之前的版本,比如版本21。

代码语言:javascript copy svn merge -r 22:21 readmeSVN 查看历史信息可以使用svn 命令根据时间或修订号或对某个版本所做的特定修改来删除过去的版本。可以使用以下四个命令来查看svn的历史记录: svn log:用于显示svn版本作者、日期、路径等。

svn diff:用于显示特定修改的行级详细信息。 svn cat:获取特定版本的文件并显示在当前屏幕上。

svn list:显示某个目录或某个版本中存在的文件。 SVN分支分支选项将为开发人员创建另一条线路。

当想要将开发过程分成两条不同的线时,此选项非常有用。比如项目demo下有两个组,svn下有一个trunk版本。

由于客户需求突然发生变化,项目需要进行重大变更。这时,项目组决定由Team 1继续完成原来的中途工作(某个模块),Team 2开发新的需求。

那么这个时候我们就可以为组2创建一个分支,这个分支其实就是主干版本(主线)的一个副本。但分支也具有版本控制功能,并且独立于主线。

当然,最后,我们可以通过(merge)功能将分支合并到主干中,最终合并成一个项目。 SVN标签(tag)版本管理系统支持tag选项。

通过使用标签的概念,我们可以给特定版本的代码起一个更有意义的名称。标签主要用于项目开发中的里程碑。

例如,当开发到一定阶段时,可以发布单独的版本等,它往往代表一个可以修复的完整版本,与VSS中的Tag大致相同。这个基本操作比较简单。

是与git的思路基本一致的代码指令操作。如果你熟练使用git的话,直接过一遍知识点就可以了。

使用SVN时,一般最好使用可视化工具,而不是使用命令!好了,本期SVN内容孙明寿就分??享到这里了。

史上最全SVN使用总结,建议先收藏再看

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 内向基金完成首轮募资

    内向基金完成首轮募资

    据投资界8月27日消息,内向基金(洞察基金)正式完成首期基金首轮超亿元募资,目标规模2亿元,将重点关注消费升级领域的股权投资。 据了解,引进基金是与新经济精品投行“穆棉资本”联合设立的私募股权投资基金。 它是由孙婷婷和Stefanie应金峰共同创立的。 两人在风险投资行

    06-17

  • 东方航天完成近6亿元B轮融资,重力2号中大型可回收液体火箭加速! -元景家族

    东方航天完成近6亿元B轮融资,重力2号中大型可回收液体火箭加速! -元景家族

    东方航天完成近6亿元B轮融资,重力2号中大型可回收液体火箭加速! |远景家族 远景资本 远景资本 远景资本 微信 IDvisionpluscapital 关于专题 远景资本公众平台汇聚创新趋势,以分享启发 01-25 17:12发布于浙江 近日,东方空间完成近6亿元B轮融资,本轮投资被梁溪科技创新产业

    06-18

  • 晶合集成电路股份有限公司今日在科创板挂牌,总市值近400亿元

    晶合集成电路股份有限公司今日在科创板挂牌,总市值近400亿元

    合肥市人民政府 据合肥市人民政府消息,5月5日,合肥市晶和集成电路股份有限公司在上海证券交易所上市。 成功登陆科创板,成为安徽省首家成功登陆资本市场的纯晶圆代工企业。 本次发行价格为19.86元。 超额配售选择权全额行使后,募集资金5500万元,在科创板上市公司融资规模

    06-06

  • 专注绿色制氢技术,“动量守恒”完成数千万元天使轮融资

    专注绿色制氢技术,“动量守恒”完成数千万元天使轮融资

    投资界(ID:pedaily)5月29日消息,国内质子交换膜电解槽核心材料及器件提供商合肥动量守恒绿色动力节能股份有限公司(以下简称“动力节能”)近日正式完成领投方数千万元天使轮融资。 本次完成交割的天使轮领投方为当看同创资本,元和资本担任天使轮融资独家投资方。 本轮融

    06-18

  • 工业互联网公司德云科技完成5亿元B轮融资,中金传化基金等联合领投

    工业互联网公司德云科技完成5亿元B轮融资,中金传化基金等联合领投

    投资界4月26日消息,近日,“新基建”全栈工业互联网产品提供商“退风科技完成5亿元B轮融资。 本轮融资由中金传输基金、深创投、交银国际、越秀金控联合领投,招商致远、青控招商、云启资本、亿唐宏图集成电路及互联网投资基金跟投老股东继续投资。 据悉,德丰科技在10个月内

    06-18

  • 2021年以来新设立基金规模已达5332.79亿元

    2021年以来新设立基金规模已达5332.79亿元

    Wind数据显示,截至2月3日,年初以来累计设立基金,发行规模7900万元。 其中,仅1月份就成立了一只基金,发行规模达4000万元,是继今年7月之后历史上第二高的单月发行规模。

    06-18

  • 登特菲完成数千万Pre-A轮融资,持续加大研发投入和生态拓展

    登特菲完成数千万Pre-A轮融资,持续加大研发投入和生态拓展

    投资界(ID:pedaily)4月24日消息,合肥登特菲医疗器械有限公司近日公告完成数千万元Pre-A轮融资。 本轮融资由海恒资本、宏博资本、创谷资本、合肥天使投资基金共同投资。 本轮融资完成后,登特菲将继续加大智能高端口腔医疗设备的创新研发,加大量产线建设,加速产品迭代和

    06-17

  • 安好时代:APP上线100天内用户数达数十万

    安好时代:APP上线100天内用户数达数十万

    2019年6月6日,北京安好时代科技发展有限公司发布了公司首款移动产品——安好APP,目前活跃用户量已达45万。 据悉,安好时代整合了大量医疗资源,打造了一支由数十名专职医生组成的团队。 不少医生入驻安好医生平台,开设个人诊所。 2019年6月28日,安好联合中国老年保健协会

    06-17

  • AI工具库详细介绍——Midjourney

    AI工具库详细介绍——Midjourney

    Midjourney是一款基于AI的图像生成工具,专注于通过文字描述创建高质量的视觉内容。 主要功能: 1.图像生成:Midjourney接受用户通过文字输入的描述,并将这些描述转换为详细的图片。 用户可以指定样式、主题、颜色和其他元素。 2.风格模仿:该工具能够模仿艺术家已知作品的各

    06-17

  • 长期投资是一个可持续的问题,宜信财富宣布《资产配置策略指引》2018年将重点关注这些行业……

    长期投资是一个可持续的问题,宜信财富宣布《资产配置策略指引》2018年将重点关注这些行业……

    2018年,全球宏观经济和各类资产的表现大幅超出市场年初的悲观预期。 它已经悄然到来。 新的一年,投资者可能面临全球经济、政策和政治环境的哪些变化?如何调整投资策略应对风险并实现资产增值?    据投资界1月10日消息,宜信财富正式发布《年资产配置策略指引》(以下简

    06-18

  • 罗永浩评论坚果手机被废弃,王思聪被迫再次执行

    罗永浩评论坚果手机被废弃,王思聪被迫再次执行

    “罗哥,坚果没了”。 “嗯,是好事。 ”近日,字节跳动宣布暂停手机业务,原锤子科技团队成立的新石实验室,并入教育硬件团队。 业务方面,合并后的硬件团队将专注于教育领域,不再开发坚果手机、TNT显示器等其他无关产品。 坚果手机补充称,售后和系统维护将继续进行,手机

    06-17

  • 东车日报|理想失败后车主被要求签署保密协议-特斯拉扩大Model S召回范围-丰田计划在日本停售凯美瑞

    东车日报|理想失败后车主被要求签署保密协议-特斯拉扩大Model S召回范围-丰田计划在日本停售凯美瑞

    阿维塔11单电机版纯电动SUV介绍华为官宣M5高端智能手机驱动版氪倡议:联合抵制网络水军。 比亚迪即将推出“云柴系统”,疑似与底盘有关。 比亚迪新专利:可通过静脉识别解锁车辆理想ONE突然断电,售后服务需要保密协议。 阿维塔11单电机纯电动SUV今日发布。 在晚间的新品发布

    06-21