惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
J
Java Code Geeks
P
Proofpoint News Feed
Recent Announcements
Recent Announcements
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
MongoDB | Blog
MongoDB | Blog
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
雷峰网
雷峰网
D
DataBreaches.Net
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta

Subversion

idea 中, svn 提交代码时,会将空行认为被修改内容 有哪些方式可以部署一套容易使用的 svn 服务器? MAC 重装系统后 SVN 无法使用 。跪求大神 mac 上有什么好用的 svn 工具吗? 紧急求助。mac brew 安装最新版 SVN 报 svn: E120171 SVNAdmin2 - 基于 web 的 SVN 管理系统 求一款免费的 MacOS Monterey 的 SVN 客户端 SVN 常用命令总结 Linux SVN 下如何正确忽略文件或文件夹? 如何在没有 trunk/branch/tag 目录结构的 svn repo 中 创建分支? idea 中查看 svn 的提交记录一直卡死未响应,有人知道怎么回事吗? SVN 配合 Apache 出现一个错误[authn_file:error] [pid 7740] (13)Permission denied: AH01620: Could not open password file 想问下 SVN 的代码审核怎么做? Mac 自带的 svn 版本 1.9 太高,可以降吗? svn 是不是没办法设置忽略指定目录的的指定文件? TortoiseMerge 可以比较两个 word 文件的差异,但是其对应的命令行是什么呢? sourceforge 上的项目如何匿名检出啊,咋个都不行了呢 有没有办法可以在 linux 环境看到 svn diff 的空白字符 随着使用,.svn文件夹会越来越大,怎么破? 如何在svn中直接执行php 请问如何删除服务器端的文件夹? 请教下用SVN的朋友是怎么来管理分支的?
还是 svn 好用,如果不需要创建分支。如果不需要频繁地创建分...
youcanwin8099 · 2019-08-16 · via Subversion

1)适用对象不同。Git 适用于参与开源项目的开发者。他们由于水平高,更在乎的是效率而不是易用性。Svn 则不同,它适合普通的公司开发团队。使用起来更加容易。
2)使用的场合不同。Git 适用于通过 Internet,有多个开发角色的单个项目开发,Svn 适合企业内部由项目经理统一协调的多个并行项目的开发。
3)权限管理策略不同。Git 没有严格的权限管理控制,只要有帐号,就可以导出、导入代码,甚至执行回退操作。Svn 则有严格的权限管理,可以按组、按个人进行针对某个子目录的权限控制。区分读、写权限。更严格的,不支持回退操作。保证代码永远可以追踪。
4)分支(branch)的使用范围不一样。Git 中,你只能针对整个仓库作 branch,而且一旦删除,便无法恢复。而 svn 中,branch 可以针对任何子目录,它本质上是一个拷贝操作。所以,可以建立非常多、层次性的 branch,并且,在不需要时将其删除,而以后需要时只要 checkout 老的 svn 版本就可以了。
5)基于第三点,Git 适用于单纯的软件项目,典型的就是一些开源项目,比如 Linux 内核、busybox 等。相反,Svn 擅长多项目管理。比如,你可以在一个 svn 仓库中存放一个手机项目的 bsp/设计文档 /文件系统 /应用程序 /自动化编译脚本,或者在一个 svn 中存放 5 款手机项目的文件系统。git 中必须建立 n(项目数)*m (组件数)个仓库。Svn 中只需要最多 n 或者 m 个就可以了。
6)Git 使用 128 位 ID 作为版本号,而且 checkout 时要注明是哪个 branch,而 svn 使用一个递增的序列号作为全局唯一的版本号,更加简明易懂。虽然可以使用 gittag 来建立一些文字化的别名,但是毕竟那只是针对特殊版本。
7)可跟踪性,git 的典型开发过程为:建立分支,进行开发,提交到本地 master,删除分支。这样做的后果是以前的修改细节会丢失。而在 svn 下做同样的事情,不会丢失任何细节。这里是一个有趣的链接,表明了 git 下典型的工作方式:(以 master 为核心,不断创建新 branch,删除旧 branch):
http://www.kernel.org/pub/software/scm/git/docs/howto/separating-topic-branches.txt
8)局部更新,局部还原。SVN 由于是在每个文件夹建立一个.svn 文件夹来实现管理,所以可以很简单实现局部更新或者还原。假如你只希望更新某些部分,则 svn 可以很好实现。同时代码写错了,同时可以很好实现局部还原,当然 git 也可以通过历史版本还原,但是无法简单地实现局部还原。
SVN 属于集中化的版本控制系统
这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说。现在,每个人都可以一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限。
事分两面,有好有坏。这么做最显而易见的缺点是中央服务器的单点故障。若是宕机一小时,那么在这一小时内,谁都无法提交更新、还原、对比等,也就无法协同工作。如果中央服务器的磁盘发生故障,并且没做过备份或者备份得不够及时的话,还会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录,被客户端提取出来的某些快照数据除外,但这样的话依然是个问题,你不能保证所有的数据都已经有人提取出来。
Subversion 原理上只关心文件内容的具体差异。每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。
Subversion 的特点概括起来主要由以下几条:
每个版本库有唯一的 URL (官方地址),每个用户都从这个地址获取代码和数据;
获取代码的更新,也只能连接到这个唯一的版本库,同步以取得最新数据;
提交必须有网络连接(非本地版本库);
提交需要授权,如果没有写权限,提交会失败;
提交并非每次都能够成功。如果有其他人先于你提交,会提示“改动基于过时的版本,先更新再提交”… 诸如此类;
冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。
Git 属于分布式的版本控制系统
自 2005 年诞生于以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求。
与 SVN 不同,Git 记录版本历史只关心文件数据的整体是否发生变化。Git 并不保存文件内容前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一连接。
简略的说,Git 具有以下特点:
Git 中每个克隆(clone)的版本库都是平等的。你可以从任何一个版本库的克隆来创建属于你自己的版本库,同时你的版本库也可以作为源提供给他人,只要你愿意。
Git 的每一次提取操作,实际上都是一次对代码仓库的完整备份。提交完全在本地完成,无须别人给你授权,你的版本库你作主,并且提交总是会成功。
甚至基于旧版本的改动也可以成功提交,提交会基于旧的版本创建一个新的分支。
Git 的提交不会被打断,直到你的工作完全满意了,PUSH 给他人或者他人 PULL 你的版本库,合并会发生在 PULL 和 PUSH 过程中,不能自动解决的冲突会提示您手工完成。
冲突解决不再像是 SVN 一样的提交竞赛,而是在需要的时候才进行合并
和冲突解决。
总之,公司的开发团队在进行的项目开发管理时,svn 是更好的选择,团队成员共同维护公司的中心版本。
若是开源项目,则 git 更加适合,每个人都可以维护自己专属的版本,同时有 github 开源社区支持