新足迹

 找回密码
 注册

精华好帖回顾

· 宅妈新作-采花小盗 (2011-10-14) coolsunboy · 行车记录仪布线 (2013-2-1) 大饼
· 烤猪颈肉 (2009-8-14) pal · 十年前的旧车票 (2009-6-7) astina
Advertisement
Advertisement
查看: 1506|回复: 10

关于git的问题 [复制链接]

头像被屏蔽

禁止发言

发表于 2011-8-6 14:30 |显示全部楼层
此文章由 netstat 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 netstat 所有!转贴必须注明作者、出处和本声明,并保持内容完整
前不久在这里看到很多大侠介绍新一代的版本管理软件git,试了一下,各方面都感觉很不错,但是碰到一个问题,不知道大家是怎么解决的。


git是一种分布式的源码管理,每个人都在自己的本机上有一份完整的拷贝,每个人都可以对自己的拷贝进行修改,提交。

那么如何进行用户控制呢?git的用户名是你自己填的,虽然可以在中央服务器通过认证来决定谁可以push进来,谁不可以,但是push进来的代码,查log的话,里面的用户名并不一定跟服务器认证的用户名一致。

因为其实这个认证是加在http服务器一级的,而不是git内置的。那么将来如果要查是谁改了代码又如何能够确信是这个人而不是冒名顶替呢?
签名被屏蔽
Advertisement
Advertisement

发表于 2011-8-6 23:26 |显示全部楼层
此文章由 windix 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 windix 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我来抛下砖. 因为我并不是在工作中使用git, 下面是我自己使用中的方案, 也许有更好的解决方案.

你可以搜索一下 gitosis 这个方案. gitosis是git repo的多用户管理. 你需要设置一个公用的ssh账户, 比如 git@abc.com. 之后你的每个repo都通过 git@abc.com:reponame.git 来clone / pull / push.
gitosis本身也是通过一个名为gitosis-admin.git的git repo来控制的. 每个用户都需要上传他的ssh public key, 然后在gitosis.conf中你可以控制哪个用户有权访问哪个repo.

因为是通过ssh public key authentication做的, 所以只有经过认证的用户才有权clone / pull 和 push指定的repo.

我额外还安装了一个速度很快的git web界面, cgit, 很方便管理.

收费的方案可以直接使用github.com, 甚至可以使用github专门为企业定制的服务.
头像被屏蔽

禁止发言

发表于 2011-8-7 17:57 |显示全部楼层
此文章由 netstat 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 netstat 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我的意思是需要控制你push到代码库的时候使用的用户名必须是你平时commit到本地库用的用户名。对于svn,因为没有本地库,所以就是非常自然的事情,但是到了分布式的代码库管理,这样做似乎蛮难的。

就好比,我本地库不但有我自己的修改,我还合并了其他一些人的修改,等我往中心代码库push的时候,不就把这些修改全部都push进去了,那么git有没有什么途径,知道这些代码是我push进来的呢?
签名被屏蔽

发表于 2011-8-8 16:08 |显示全部楼层
此文章由 windix 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 windix 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我觉得你可能没理解DCVS的一些特性。像你说的,确实你可能merge了别人的修改(也可能没有merge, 只是pull了别人最新的改动),当你push的时候, 如果那个changeset不是你commit的,push到远程后使用的就是当时commit那个人的用户名。这个除非你修改历史, 不然没法改的,是正常的。

当然如果你强行想保证所有你push到远程的用户都是特定的用户名,我想可以通过hook来做。在push动作之前检查用户名。

评分

参与人数 1积分 +3 收起 理由
netstat + 3 谢谢奉献

查看全部评分

头像被屏蔽

禁止发言

发表于 2011-8-9 15:44 |显示全部楼层
此文章由 netstat 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 netstat 所有!转贴必须注明作者、出处和本声明,并保持内容完整
谢谢楼上的,我其实并不是说要保证所有push到远程的用户都是特定用户名,而是我发现这种DCVS的用户名都是自己随便设设的,我今天可以叫张三,明天可以叫李四。

对公司用的源码管理来说,控制用户还是必要的,否则如何避免代码被人恶意更改呢?
签名被屏蔽

发表于 2011-8-9 15:45 |显示全部楼层
此文章由 cygrace 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cygrace 所有!转贴必须注明作者、出处和本声明,并保持内容完整
一激动以为是说会计中的GOODS IN TRANSIT呢
Advertisement
Advertisement
头像被屏蔽

禁止发言

发表于 2011-8-9 15:53 |显示全部楼层
此文章由 netstat 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 netstat 所有!转贴必须注明作者、出处和本声明,并保持内容完整
呵呵,会计问题怎么会跑到it版来

发表于 2011-8-9 20:40 |显示全部楼层
此文章由 cygrace 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cygrace 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 netstat 于 2011-8-9 14:53 发表
呵呵,会计问题怎么会跑到it版来


对不起,对不起,我没看清楚。
头像被屏蔽

禁止发言

发表于 2011-8-11 12:49 |显示全部楼层
此文章由 netstat 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 netstat 所有!转贴必须注明作者、出处和本声明,并保持内容完整
别激动,没啥需要道歉的,大家乐一乐就行了

发表于 2011-8-17 01:47 |显示全部楼层
此文章由 Harvi 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Harvi 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我看mercurial就不能随便push的,得有分配的账号
估计git类似吧

发表于 2011-8-17 11:06 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不懂, 所以还在用svn
Advertisement
Advertisement

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部