从 svn 迁到 git,求教大家单位上 git 都是怎么用的?

2015-09-10 00:36:22 +08:00
 oska874

项目组刚开始新一轮的工作,我就再内网服务器上用 gitlab 搭建了一个 git 服务器——不用 github 的原因是钱、速度 /功夫网、领导们不放心。公司以往用的都是 svn ,但是因为项目刚开始,所以 svn 还没有在新项目全面使用。想着趁 svn 还没有全部使用的机会,推广一下 git ,但是没有说服领导们,在他们看来 git 最大的好处就是分布式管理,可以在本地 push/pull ,除此之外和 svn 区别也不大。如果换做大家,能怎么说服经理们从 svn 转到 git ?

ps :以前公司用的 ms 的 tfs ,自己用 git 也不是很熟练,但是 git 的速度要比 tfs 快太多了。

4882 次点击
所在节点    git
38 条回复
lizheming
2015-09-10 10:27:33 +08:00
office 自带版本管理……
msg7086
2015-09-10 12:10:02 +08:00
@mozartgho 现在的情况不清楚了,上一次用 SVN 大概是 6 年多前。
我刚才查了一下,似乎分支内部使用的是硬链接来做的。
那就是说,至少是不支持 WinXP 咯。新版的 Windows 也不知道支持情况如何……总之我是懒得测了啦。

还有个麻烦事就是不支持 rebase ,对于代码库洁癖来说面条状的提交记录会看疯的。
KNOX
2015-09-10 12:31:26 +08:00
团队里面必须有个 git 比较熟练的人才行,要不然当大家都解决不了的问题出现了就要找替罪羔羊了。
c742435
2015-09-10 13:14:58 +08:00
forcecharlie
2015-09-10 13:44:43 +08:00
@msg7086
@mozartgho
svn 远程仓库肯定很大,但是也不会很大的, Subersion 基于差异,而 Git 每一次修改都将修改后的文件使用 zlib 压缩成一个 Object ,名字是 hash 格式如 {2}/{38} 存储在 .git/objects 目录 ,使用 git gc 后,写入到 objects/*.pack 对于大文件的修改, git 很容易出现体积陡增。这样的好处是,不要通过差异计算获得文件,只需要找到指定的 对象 id 然后 解压即可。

如果团队协作,项目非常大,建议使用 Subversion 或者是使用 Git 用 Submodule 机制。

Subversion 部分检出,只需要将开发者开发指定的分支或者指定的目录检出来即可。
Git Submodule 不同的开发者操作不同的 Submodule ,然后,技术主管在 总的 git 仓库设置 Submodule 的 Commit, 这个实际上可以编辑的。

分支模型, Git 的分支是均权分支,默认分支,主要指的是 remote 指向的存储库的 HEAD 里面的引用。
实际上,随着 Github 和 OSC@GIT 等代码托管网站的兴起, Pull Request 机制是比较适合 Git 的,这里带来的问题是 fork 仓库带来了磁盘存储的压力,多个 fork 请求, IO 居高不下,磁盘空间的需求几乎是呈指数增长的。

而 Subversion 的分支模型,更像文件系统目录结构,每个人对目录有不同的操作权限。在 Subversion 的官方仓库,也就是自举仓库 http://svn.apache.org/repos/asf/subversion/

trunk/ ......... The latest development sources. When people say
"Get the head of trunk", they mean the latest
revision of this directory tree.

branches/ ...... Various development branches. Typically a branch
contains a complete copy of trunk/, even if the
changes are isolated to one subdirectory. Note
that branch copies are generally removed after
they've been merged back into trunk, so what's in
branches/ now does not reflect all the branches
that have ever been created.

tags/ .......... Snapshots of releases. As a general policy, we
don't change these after they're created; if
something needs to change, we move it to
branches and work on it there.

他们的快速开发主要是 trunk, 而发布分支主要是 branches 下载分支, tag 也就是里程碑。
yellowV2ex
2015-09-10 14:01:37 +08:00
昨天有个说 git 迁到 svn 的,今天又有 svn 迁到 git 的,你们两家的 CTO 直接调一下不就得了,这么的还是底层的码农
billwang
2015-09-10 17:13:51 +08:00
https://yangjunhui.monster/t/219174

楼主是在逗我们的吧
oska874
2015-09-10 17:32:24 +08:00
@billwang 收到一点启发而已,恰巧最近在干这事。
@yellowV2ex 和 cto 无关, cto 才不管这些呢,而且这种迁移是自下而上推动的,是要说服你所说的 CTO 。
learnshare
2015-09-10 17:52:15 +08:00
文档最好还是用 Markdown 来写,存放到 GIt 上,然后使用 Web 服务来阅读
kaneg
2015-09-10 21:22:29 +08:00
楼主开发团队有多少人?如果人不对, 10 人以下,还是 svn 麻烦少
Tedko
2015-09-11 00:18:33 +08:00
受不了。。我们 5 人是 git ; 20 人公司也是 github 。。
最大的问题是你们领导。
aprikyblue
2015-09-11 02:10:14 +08:00
文档用 markdown 写
ttma1046
2015-09-11 07:47:49 +08:00
网上太多资料讲 git 的正确工作流了。
oscarzhao
2015-09-11 09:06:33 +08:00
gitlab 挺好用,合并分支的时候代码也不会丢
gamingcat1234
2015-09-11 10:01:12 +08:00
纯程序员的团队用用 git 挺好的,但是有人一说 git 就要出来喷 svn 。最关键的是,由于自己什么都不懂,还喷不到点上。“ SVN 中,每创建一个分支都是把分支的数据重新 copy 一份”,这是想什么呢??然后居然用这个指责 svn 在大 repo 下不好。事实上, git 相当不擅长处理有巨大文件的 repo ,还不如 svn 。你们应该好好看看 forcecharlie 的回复,他说的对,好几个关键问题都说到了。
gamingcat1234
2015-09-11 10:06:05 +08:00
另外,各种系统都能找到 office 文件的比较工具的。
zhuangzhuang1988
2015-09-11 13:29:06 +08:00
我还推荐 mercurial 呢, 安利了半年, 没啥鸟用.
oska874
2015-09-17 15:20:42 +08:00
@bbx git 有一个不足,就是没办法给目录分别设权限,而这一点 tfs 做的就很不错。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/219512

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX