正在加载中

git使用解惑-2

1.我在用git关注一个开源项目的更新,我想按提交顺序查看代码怎么办?
建议的方式是,针对每次提交创建分区,以切换分区的方式查看。
git rev-list HEAD|tail -1|head -1 #第1次提交的SHA1
git rev-list HEAD|tail -2|head -1 #第2次提交的SHA1
…以此类推,可以得到一个SHA1串。
git checkout e8365163 #只需要写前7、8个字符就行。
工作区就是想要的内容,git chekout master 就可以恢复原有的内容了。

2.经过试用为什么没有给我的开发工作带来什么好处呀?
这是你的使用方式决定的。如果在主分支下进行开发并每次做PULL和PUSH与服务器同步代码,这与使用CVS/SVN是没有什么区别的,只剩下一个好处就是可以迅速的浏览修改日志(因为日志在本地)。以上是并没有真正的理解GIT。GIT提倡在于你独立完成自己的部分后,再去合并其他人的部分;在完成之前尽量避免同步,这是因为频繁的合并会打乱你自己的连贯性、频繁的提交会让人们的耦合加大。

3.待续

git使用解惑-1

1.为什么直接clone下来的仓库,checkout出来的东西会显示已修改?
这是一个很麻烦的事情,基本都在windows平台上出现。已知的原因是,在安装的时候,选择了错误的CRLF处理方式。这里建议使用文件原始的CRLF吗,不进行自动转换。修改.gitconfig文件[core]段autoCRLF = false,并重新checkout基本能够解决此问题。笔者将从linux下clone的库放到windows下使用出现此问题;用以上的方法未起作用,在windows下重新clone了一下原库才得以解决。

2.使用git svn转换一个SVN仓库为什么这么慢?
这是正常现象,主要取决于SVN仓库与提交日志的大小,最好只clone在SVN的主分支trunk下的代码。clone完成后,最好做一次git gc来压缩一下空间。

3.怎样使用git svn来体验git的功能?
通过git svn clone将SVN仓库中主分支trunk给clone下来。在本地git仓库可以创建多个开发分支进行开发,并与主分支master及时合并。在git主分支master上使用git svn rebase完成svn update的功能,通过git svn dcommit实现svn ci的功能。不使用开发分支而直接使用主分支master也是可以的,但是那就丧失了使用git的意义;git通过分支功能,能够让你无限制的尝试创新。

4.git适合什么样的软件公司使用?
git带来的不仅仅是分布式的开发模式,同时可以演化出改进团队开发效率的新思路。git带来的是团队合作模式下个体意志的解放,最适合创新型公司。除此以外,适合有异地协同开发需求的公司,解决网络带宽与合并所带来的困扰。

GIT在windows下使用经验谈

1.关于msysgit
使用MingGW编译的git版本,网址http://code.google.com/p/msysgit/。虽然其版本更新并没有紧随git-scm.com中的版本,但其可用性也是非常高。不知道什么原因(可能是不支持在windows下架设服务器),阉割掉了git-daemon,git-cvsserver等作为代码同步源的功能,但剩下的功能已经足够了。还有的问题就是,与linux环境性比,程序启动速度略显迟钝(cygwin版同样),并且两个windows下开发者之间做code review要费一定周折。对于反映慢的问题,我可以肯定的是杀毒软件的原因,因为windows下是必须要装杀毒软件的,可以尝试文件监控对非可执行文件的监控。
2.关于tortoisegit(小乌龟)
使用tortoisesvn源代码进行改写的,本文截至时仍有些细小的bug,但仍是非常非常易用的git GUI。菜单中的功能并不全面,所以有时需要git命令行来完成某些功能。
3.关于Visual Studio与Eclipse的插件问题
我要灌输的一个思想是,没有必要使用特定开发工具的插件。只要在项目根目录中编辑好.gitignore文件,就可以满足需要了。在我眼里,插件的功能无外乎在代码“合并”的时候能够使用开发工具所提供的工具而已,我认为记事本和UE更适合。
4.关于“能有多爽”的问题
能够完全套用CVS、SVN所使用的“集中代码管理”的开发规则,除此之外,就只剩下“爽”了。分布开发最明显的两个功能:“本地日志”、“开发分支切换”。本地日志:本地包含整个项目的代码库,日志的查看、历史版本的比较都在本地进行,开发场所不在受限制,对于异地共同开发尤为适合。开发版本切换:只需要一个工作区,就能够在不同的开发分支中切换使不属于指定分支的修改都会被cut掉的,代码场景切换省心省力。题外话,两个开发者之间做代码审查,会狠狠方便;不过要解决同步方式问题,建议采用网络磁盘映射的方式进行。我认为GIT能够诱发一个开发者的激情,除非那个开发者没有激情。
5.关于代码保密性的问题
自始至终,这是纯粹的管理问题,与SCM的选择是无关的。项目驱动性制的公司,其重头戏是市场的拓展,项目代码跳出这个公司将没有生存土壤,因为你的竞争对手不需要你的垃圾。存在自有核心技术的公司,最重要的留住核心开发者,因为他们自觉不自觉的都会有自己所能接触到的代码的备份,与SCM是无关的。采用局域网VSS,任何保密性都没有,:-)。

直销=洗脑

直销最基本的方法:洗脑。能够让一个只买3元左右价格牙膏的人,很感恩的买13元的牙膏。
安利、无限极、康宝莱之类的,无论公司怎么与传销撇干净,地下的业务员总是参考传销那套去做。如果不洗脑,谁会心甘情愿的买那么贵的东西。他们的东西是一种食品,纯粹的盈利目的,的确比馒头有营养。
保健品有药品的疗效(他们一般不说治好,只说有改善,哈哈),这是营销人员都采用的伎俩;即便他们不说,“拖”也会说的。别犯傻了。
一个名词:亚健康,是一种状态,不是病,调节一下生活规律就能够改善的(哈哈)。必须承认亚健康状态是要调整的,但是吃那么贵的东西,狠狠划不来,不如自己锻炼身体+食补的好,又经济又容易(但是不容易坚持,呵呵)。被洗脑的话,就会像有强迫症似的坚持吃保健品,真是太佩服这种营销方式了,但是很恨采用这种营销方式的人,咳。

牙;-(

最近又发现有2颗牙有问题。现在一共有4颗坏牙了(以前已经拔掉4颗犬牙了)。除了头发稀疏之外,又挂了点彩。
很难想象,我这样的好人会有如此的遭遇。咳,报应。

安装gitosis管理GIT仓库

1.下载安装gitosis
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install

2.生成密钥,初始化gitosis
useradd git –无密码不可登录
su git
cd
ssh-keygen -t rsa –按提示生成
gitosis-init < .ssh/id_rsa.pub

3.管理仓库
a.在git下新建manager目录
cd manager
b.通过git来完成gitosis的设置
git clone git@localhost:gitosis-admin
(1)通过向目录keydir中添加SSH-KEY来标识用户
(2)通过修改gitosis.conf来管理用户的权限(http://eagain.net/gitweb/?p=gitosis.git;a=blob;f=example.conf)
c.一般使用
(1)在.ssh目录中保证有正确的私钥
(2)git git@xxxxxx:xxxx.git

最简单的git服务器搭建(CentOS环境)

1.下载git并安装
a.进入http://git-scm.com/download,下载源代码包文件
wget http://kernel.org/pub/software/scm/git/git-1.6.3.1.tar.gz
b.解压tar -xvzf git-1.6.3.1.tar.gz
cd git-1.6.3.1
./configure –prefix=/usr/git
make
make install
c.设置环境变量
在/etc/bashrc尾部追加配置
export GIT_HOME=/usr/git
export PATH=$GIT_HOME/bin:$PATH

2.创建并管理项目
a.建立一个用户test,密码123456
useradd -s/bin/bash test
passwd test …设置密码:123456
b.建立git库
cd /home/test
mkdir test.git
cd test.git
git init –bare

3.GIT客户端连接
git clone ssh://test@xxx.xxx.xxx.xxx/~/test.git
按提示输入密码:123456,完成克隆。

4.总结:
成员离开项目,就可用通过邮件方式通知其他人test的新密码,来保证安全。
最经典的可以在一个用户下,进行多个项目的管理。当然也可以用多个用户来管理多个项目。

看到好句

像当场要离开一样准备好,像永远要留下来一样去打拼。
— 或许时间把思绪给冲淡了,要重新拾起。

谈谈C/C++与JAVA

必须承认C/C++作为最重要的语言会始终持续下去,做为系统级基础语言没有过时的可能性。也必须承认JAVA做企业解决方案的时的优越性;除了是SUN的专有语言外,几乎没有其他的瑕疵。
他们两个没有必要对比,因为侧重点(或者说使用环境)是不同的。也算应用了这两种语言很长时间了,最大的感受是:C/C++的第三方库不是像JAVA那样多、那样优雅,JAVA不像C/C++那样更富有灵魂。

生在这里

先了解自己再了解别人.有许多不懂的事情要多想.
放弃执着,接受规则,掌握规则,驾驭规则,让自己变成自己曾经愤恨的那类人.
在这里,事情是这样的:冒险是允许的,也是可靠的;成功的结果,会让过程不再有瑕疵;只有不合法的没有不合理的.
爱这里吧!