新足迹

 找回密码
 注册

精华好帖回顾

· 上课: 教你怎么做 Power Point Presentation - 我忽悠忽悠哦哦哦 (2010-11-9) Ritacow · 我的“自白” (2008-9-22) 着我青衣永飘零
· 上海上海 (2015-8-12) X7PwC · 2022雪季更新, 给平淡的生活添点颜色,学滑雪十天,从入门到蓝道. (2019-9-18) Sydneier
Advertisement
Advertisement
楼主:kr2000

谈谈version control吧 [复制链接]

发表于 2010-10-22 09:54 |显示全部楼层
此文章由 ingeer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ingeer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
用過SourceSafe, CVN, ClearCase, Synergy.. 沒啥感覺都差不多。。 每換一次工作都要重新學習怎麼用新的系統。。
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-10-22 09:57 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 ingeer 于 2010-10-22 10:54 发表
用過SourceSafe, CVN, ClearCase, Synergy.. 沒啥感覺都差不多。。 每換一次工作都要重新學習怎麼用新的系統。。


同意,

其實Git 也差不多的。

就是每個client 都是一個Branch. branch 在client而不是在server.

沒次checkin其實都是merge in.
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

特殊贡献奖章

发表于 2010-10-22 10:16 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-22 10:57 发表


同意,

其實Git 也差不多的。

就是每個client 都是一個Branch. branch 在client而不是在server.

沒次checkin其實都是merge in.

一般server还是要有branch,client是push到branch,这样在server上就可以看到完整的树形
checkin其实就是把一堆patch加到server的branch上
如果没有conflict也是不需要merge的

发表于 2010-10-22 10:20 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
大多数情况下,如果一个file在一个branch在不同的changeset中有多次位置相近或者重复的修改/checkin,如果你想把多次changesets merge到另外一个branch,tfs的source control就需要你手工干预了,这个过程是最痛苦的过程。

我们一般的做法是不轻易merge到一个branch,如果一个feature要go prod,我们争取在dev做好,减少多uat的merge,QA sign off之后,到integration branch只能一个changeset,到ppd/prod也是一个.

如果git能把这方面的merge做好的话,我想它一定能beat tfs的source control.

2010年度奖章获得者

发表于 2010-10-22 10:23 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
client 都push到同一個server 的branch? 還是每個client push到server上不同的 branch?

然後server admin 定期 把branch merge back to trunk?

2010年度奖章获得者

发表于 2010-10-22 10:26 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-10-22 11:20 发表
大多数情况下,如果一个file在一个branch在不同的changeset中有多次位置相近或者重复的修改/checkin,如果你想把多次changesets merge到另外一个branch,tfs的source control就需要你手工干预了,这个过程是最痛苦的过程。

我们一般的 ...


"merge" 都一模一樣的, 有conflict 就要人工干預

git 只是架構不同, 所謂的分佈是repo

评分

参与人数 1积分 +20 收起 理由
bulaohu + 20 好几个帖子的分,加在一起了:lol ...

查看全部评分

足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2010-10-22 10:35 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-22 11:26 发表


"merge" 都一模一樣的, 有conflict 就要人工干預

git 只是架構不同, 所謂的分佈是repo


我觉得merge还可以智能一下的,例如同一个人对同一段code有不同version的check in,可以取最高的作为final version,而不是让你手工干预,可能source control不想担这个责任吧,让developer自己去干。

2010年度奖章获得者

发表于 2010-10-22 10:39 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-10-22 11:35 发表


我觉得merge还可以智能一下的,例如同一个人对同一段code有不同version的check in,可以取最高的作为final version,而不是让你手工干预,可能source control不想担这个责任吧,让developer自己去干。 ...


這種情況下,做“智能” 是很愚蠢的。 跟不能以 last checkin 就認為是對的。

merge code 是一定要 “人” 來看conflict code 的邏輯的。 絕對不能讓機器來做這個任務。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

特殊贡献奖章

发表于 2010-10-22 10:42 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-22 11:23 发表
client 都push到同一個server 的branch? 還是每個client push到server上不同的 branch?

然後server admin 定期 把branch merge back to trunk?

branch就是一个包含了一部分patch的分支,你可以建一个branch给自己用,push到自己的branch。或给一个group用,完成一个功能或一个备份项目。
大的项目还是得由admin来merge了,或者用cherry pick来挑选需要的patch加到master branch(trunk)

2010年度奖章获得者

发表于 2010-10-22 10:44 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
舉個例子。

lastest version

line 1950:  if (age > 20) { .... }

previous version

line 1950: if (age > 30) { ..... }

你說說, 你讓機器自動該的改的話, 機器怎麼來判斷應該用那個值?

這個例子可能還不是最好的。。。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

特殊贡献奖章

发表于 2010-10-22 10:46 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
所以还是在developer层面解决conflict比较好
用git一般在push之前,先pull,解决conflict后再push
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-10-22 10:52 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2010-10-22 11:42 发表

branch就是一个包含了一部分patch的分支,你可以建一个branch给自己用,push到自己的branch。或给一个group用,完成一个功能或一个备份项目。
大的项目还是得由admin来merge了,或者用cherry pick来挑选需要的patch加到mast ...


靠, 我聽著怎麼覺得那麼危險???

分佈式的repo, 就是說 沒個client上都有一個 repo。 舉個例子, 一個open source project。 說有2 個 developer, 1個 admin
這2個developer 在不同的國家。 各自local有一個repo。

各自在自己家裡 做了2 星期。 2 週後他們check in 到了 server 上各自的 branch。

然後他們通知那個admin, 叫他merge 2 個branch 到trunk.

(2 個branch 裡可能有非常不同的  new project, new files--- 這個就不說了)

如果同一個文件裡, 就像我上一個例子。

Branch A: line 1950: if (age > 30)

Branch B: line 1950: if (age > 20)

立馬一個conflict, admin 不是要傻眼啦? 連個developer 有都去度假了。

怎麼辦?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

2010年度奖章获得者

发表于 2010-10-22 10:58 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2010-10-22 11:46 发表
所以还是在developer层面解决conflict比较好
用git一般在push之前,先pull,解决conflict后再push


Git的優越性不就在 有本地的 repo 嗎。

要是整天都不斷的去pull server, 來跟新本地。

那在本質上跟 SVN, TFS 那些 central repo 有啥區別呢?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2010-10-22 11:00 |显示全部楼层
此文章由 rogerk 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rogerk 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-10-22 10:53 发表


in source control explorer

right click folder ->get specific version-> type dropdown choose changeset->click changeset->in textbox "by user" type in your user name.

u can get all changeset in that ...


多谢,居然藏在这里。。。实在是太不好了。
我没事干嘛要get specific version阿。。看起来就像个side effect功能。

特殊贡献奖章

发表于 2010-10-22 11:05 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-22 11:52 发表


靠, 我聽著怎麼覺得那麼危險???

分佈式的repo, 就是說 沒個client上都有一個 repo。 舉個例子, 一個open source project。 說有2 個 developer, 1個 admin
這2個developer 在不同的國家。 各自local有一個repo。

各自在 ...

conflict让admin做,跟杀了他一样
如果做同一个project,当然得用同一个branch了,每天得pull pull看看别人做了什么

有时一个项目有几个不同的客户,有不同的功能需求,就可以用branch来解决

特殊贡献奖章

发表于 2010-10-22 11:07 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-22 11:58 发表


Git的優越性不就在 有本地的 repo 嗎。

要是整天都不斷的去pull server, 來跟新本地。

那在本質上跟 SVN, TFS 那些 central repo 有啥區別呢?

假设你没有网络,你可以一直写,一直写,到有网络的时候pull一下,解决conflict,然后push
Advertisement
Advertisement

发表于 2010-10-22 11:10 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 rogerk 于 2010-10-22 12:00 发表


多谢,居然藏在这里。。。实在是太不好了。
我没事干嘛要get specific version阿。。看起来就像个side effect功能。


如果你在本地删掉file/folder了,这个东西可以帮助你从server重新get latest version,如果你直接click “get lastest version”,是不工作的。

2010年度奖章获得者

发表于 2010-10-22 11:12 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2010-10-22 12:07 发表

假设你没有网络,你可以一直写,一直写,到有网络的时候pull一下,解决conflict,然后push


所有其他的 central repo 都支持 offline。
TFS 還支持讓你 "check in" 到一個 零時 server repo。

我還是沒看出來 Git 的優越性?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

特殊贡献奖章

发表于 2010-10-22 11:21 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-22 12:12 发表


所有其他的 central repo 都支持 offline。
TFS 還支持讓你 "check in" 到一個 零時 server repo。

我還是沒看出來 Git 的優越性?

我想git有个好处就是只存diff,每次pull/push的时候速度非常快
offline的对比,我找到两段

In a distributed VCS like Git every user has a complete copy of the repository data stored locally, thereby making access to file history extremely fast, as well as allowing full functionality when disconnected from the network. It also means every user has a complete backup of the repository. Have 20 users? You probably have more than 20 complete backups of the repository as some users tend to keep more than one repository for the same project. If any repository is lost due to system failure only the changes which were unique to that repository are lost. If users frequently push and fetch changes with each other this tends to be an incredibly small amount of loss, if any.

In a centralized VCS like Subversion only the central repository has the complete history. This means that users must communicate over the network with the central repository to obtain history about a file. It also means that having 20 users does not automatically imply 20 active backups. Backups must be maintained independently of the VCS. If the central repository is lost due to system failure it must be restored from backup and all changes since that last backup are likely to be lost. Depending on the backup policies in place this could be several man-weeks worth of work

但你说SVN offline也什么都能做,我想这部分优势也不大。可能backup有点优势

[ 本帖最后由 kr2000 于 2010-10-22 12:23 编辑 ]

2010年度奖章获得者

发表于 2010-10-22 12:08 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Git 等於是把真個 server 都下載到本地。
SVN, TFS這些都能離線編輯, 但你要看 History, 那是要連接到server 才能看的。

還是沒看到git的優越性到底在哪裡。。。。

其一陣Eric Sink 有個podcast 談的就是分佈式Versioning control, 我在把它拿出來聽聽。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

2010年度奖章获得者

发表于 2010-10-22 12:15 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
倒是看到了一個優越性。

就是你能把整個 repo 下載到本地, 然後你可以完全離線編輯。同時還享有一切server repo的特性。

不過這個特點,不太吸引人啊。。。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2010-10-22 12:41 |显示全部楼层
此文章由 windix 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 windix 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2010-10-22 09:46 发表

想去看看,可是还要花钱买


这个, 你随便用书名+PDF搜索就会有很多下载了, 我就不明说了.
虽然我也是用这个渠道看的, 但是看过后说实话这书还是很值得一买的

特殊贡献奖章

发表于 2010-10-22 12:44 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
可能git的设计方法比较好,省资源
我的整个repo跟源程序的大小很接近,svn可能需要占用比较多的空间

2010年度奖章获得者

发表于 2010-10-22 13:22 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
能推薦一個 好的 Git client嗎? (for windows)

发表于 2010-10-22 13:34 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-10-21 16:23 发表


tfs的很难用么?不觉得阿。不过我用winmerge代替了它默认的那个compare/merge tool.


winmerge智能吗? tfs那个确实很折磨人, 尤其碰上一个没事就喜欢把代码按自己的习惯整理一遍重排版的主儿.

特殊贡献奖章

发表于 2010-10-22 13:36 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
听说过这个
http://code.google.com/p/msysgit/
我没用过啊,不好用别怪我
Advertisement
Advertisement

发表于 2010-10-22 13:45 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Dan.and.Andy 于 2010-10-22 14:34 发表


winmerge智能吗? tfs那个确实很折磨人, 尤其碰上一个没事就喜欢把代码按自己的习惯整理一遍重排版的主儿.


抱歉,winmerge不能对付这种行为。

这个只能通过对他的教育实现,比如告诉他只能选中自己改过的那部分ctl+e+d,不能对整个document ctl+k+d, 最好要统一整个team的language text editor的format (在vs中tools->options->text editor)

2010年度奖章获得者

发表于 2010-10-22 13:50 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2010-10-22 14:36 发表
听说过这个
http://code.google.com/p/msysgit/
我没用过啊,不好用别怪我


你用Linux的??
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

2010年度奖章获得者

发表于 2010-10-22 14:07 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我認真的又把 Eric Sink 談的就是分佈式Versioning control, 有聽了一遍。

總的來說, 他絲毫沒有講出, Git,Mercurial 的任何好處。

說Git 是為linux做的, windows上運行的不好, 切比較難用。Mercurial相對好用一點。

唯一的優點是 merge/branch 體驗會比較好一點。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

特殊贡献奖章

发表于 2010-10-22 14:11 |显示全部楼层

回复 58# 的帖子

此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我用mac
mac上有个叫gitX是git gui的工具

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部