??xml version="1.0" encoding="utf-8" standalone="yes"?> 2、徏立本地工作分支,开始工作: 修改内容直接commitQ加?a开头以省略git add操作Q? 3、提交回svn的过E: 在今天工作中Q我提交回svn的方式是Q? l果svn rebase时在master分支上生了一个新的nodeQ这样merge时就不能快速合qӞ出现了冲H,修复后,在dcommit时出错,出现N个孤立节炏V因Z熟悉Q就checkout出work分支Q进行了dcommitQ然后重新生成一ơgit库?br> 但我在执行git svn rebaseӞ又出现冲H,q个时候,只需要手工合q掉冲突Qƈ重新add一下: 然后Q再执行Q? 如果报告说没有修改内容,则换成执行: 完成rebaseq程Q这时就可以git svn dcommit了?br>q样Qȝ解决了svn历史冲突问题Q不用象前面那样W笨的重新git-svn clone. 查看/var/log/messages大致意思是SEMMIN/SEMMNS不够了。好办,如下操作Q?/p> 修改 /etc/sysctl.conf 增加以下指o 修改 /boot/loader.conf 增加以下指o 修改/usr/local/psql/data/postgresql.conf 修改以后需要重? 一切安静了。。。正义狼不叫了,世界和^了?/p> sudo emacs /etc/login.conf To initialize the database, run sudo /usr/local/etc/rc.d/postgresql initdb You can then start PostgreSQL by running: sudo /usr/local/etc/rc.d/postgresql start 监听所有地址 sudo emacs /usr/local/pgsql/data/postgresql.conf 允许某ipD连? sudo emacs /usr/local/pgsql/data/pg_hba.conf 修改pgsql密码 su l某个db增加q程语言 createlang plpgsql yangchao 安装最新版本的gitQ从git 1.5.3以后支持git-svnQgit和svn的配合就要借助q个功能? 安装完毕后要做一些简单的配置。最直接的做法就是创Z改~/.gitconfig。下面是我的.gitconfig [user]部分标示Z用者的w䆾Q你提交的代码会自动引用q一w䆾信息。[color]讄命o输出的颜艌Ӏ[alias]部分可以化一些常用命令,比如在这里将git status化ؓgit st?
首先用git-svn来初始化本地的代码库(repository) svn-repository-url部分使用svn代码库的url。如果要从trunk目录或者某个branch目录里check outQ要?s换成-T?b{选项。具体参看man git-svn。这个命令时间比较长Q因为需要同步所有的提交历史Q还好只此一ơ,以后不会q么慢了。做完这一步,在本地就有了一个完整的代码库,包括所有commit的历史和logQ已l可以开始用它来q行开发工作了?
不过Q在开始开发之前,最好先做一ơ垃圾搜集: 它对代码库的信息q行垃圾搜集和压~,最明显的作用就是减磁盘占用空间。第一ơ做效果其明显?
你可以检查一下代码库的状态: 现在应该在一个叫”master”的分支(branch)上?
用这个命令来昄出所有的分支(branch): master前有一?P代表你现在所处的分支Q另外还有一个分支叫trunkQ它是一个远E分?remote branch)Q对应的是远Esvn代码库。master实际上是trunk的一个本地分支?
接下来,需要配|忽略文Ӟ让git忽略一些目录中不希望加入代码库的文ӞcMsvn propset svn:ignore。全局有效的忽略文件列表可以添加在./.git/info/exclude文g中。比如我需要忽略所有vi产生的swp文gQ?pre>.*.swp
对于和目录有关的忽略文g讄可以在该目录下创?gitignoreQ然后加入需要忽略的内容Q比如我希望忽略根目录下的log,tmp{目录,可以直接在根目录下的.gitignore中加? 可以开始工作了。用git后开始养成一个新习惯Q就是工作前先创建新分支: -b后是分支名,创徏的同Ӟ你要转到了新分支上。尽量保持master上没有未提交到svn的commitQ这样随旉可以很容易的产生一个干净的分支?
接下来你可以写代码,修改文g或者添加文件。如果想看看修改了什么,可以用: 如果Ҏ个修改不满意Q希望恢复原Ӟ可以使用: 相当于svn revert
git引入一个烦?index)的概念,提交前,需要把要提交的文g加入到git索引(index)中: 然后提交 每次commit都是提交索引(index)中的内容?
如果要一ơ提交所有修改过的文Ӟ可以一ơ性添加,然后提交 如果只是修改Qƈ没有d新文Ӟ可以直接用下面的命o: 被修改文g加入索引q提交,一ơ完成全q程?
在修改加入所索引后,如果想看看烦引内容中都所了什么修改,可以用: 适合在提交前做最后的code review?
查看最q一ơ提交的内容Q可以?pre>git show
修改中随时查看当前代码库的状态: 相当于svn status
删除和移动某个文Ӟ 在完成了几轮工作后,要将本地内容提交到远Esvn中,可以先让当前分支和远Esvn同步Q?pre>git svn rebase
然后所有已l合q到master分支的本CҎ交到svn 如果在git svn rebase时发生代码冲H,需要先手动解决冲突Q然后用git add修改加入烦引,然后l箋rebase 最后说说这U工作方式的~点。这个话题稍微复杂一炏V?
svn和git的工作原理毕竟不同,git对代码提交的非线性特性在svn中难以再玎ͼ如果使用了git-merge或者git-pullQ再提交到svnQ相兛_支上的提交历史有可能无法体现在svn上。从svn的用者的角度Q无法L别这是一个提交还是一ơ合qӞ所以在和svn协作q程中,量不要使用mergeQ或者说Q尽量让代码库保持线性?
我的l验是,如果不在乎svn中是否反映出提交历史Q用merge也无妨。比如完成工作后Q可以将工作分支合ƈC分支中去Q?pre>git checkout master
git merge new_branch
先用checkout命o切换回master分支Q然后将新分支中内容合ƈq来。然后在master分支上做git svn rebase和dcommit。从svn来看Q这是一个commitQnew_branch上的提交历史在svn上体C出来?有例外情况,以后再讨??
q有一个解军_法是量保持git代码库的U性特征。比如在new_branch分支中,先和master做rebaseQ再合ƈ到master分支中: 然后在master上做dcommitQ就可以在svn代码库中看到完整的提交历双Ӏ?
如果看到q已l有点头晕了Q可以干脆不它Q就按照前面的做法,直接在你的工作分支里dcommitQ等寚wU性开发有一定了解再来看各种情况?
好了Q基本上知道q些可以干zM?/p> 首先不要有心理障,那些名词都是吓唬人的。所谓的“非U性开发”无非是指强大的branch和merge的能力,“分布式版本理”就是说每h自己都有一套本地的repositoryQ不存在一个集中的版本服务器? l我带来的最直接的好处有Q? 工具之所以好Q除了方便好用,q在于它帮助q׃做正的事情。频Jcheck in是一件很好的事情Q好处我不多说了Qgit鼓׃频繁check in。branch也是一件好事情Q我们大多很怕branch因ؓ它太ȝ了,Lq层心理包袱Qbranch可以让我们的开发工作很有条例? q有一些实用的功能Q比如bisect,用二分法来寻找regressionQ你以前手动做过q种事么Q我做过。以后如果要做就不会怕了。还有stashQ做hot fix非常方便? 如果正在用svnQ劝服所有合作开发者用git之前Q可以先用git-svnQ和svn整合得非常好? 分布式版本管理系l取代集中式版本理pȝQ只是时间的问题了?/p> q是说下架构Q这ơ去和左拉聊q之后,比较有感触,但是依然有不赞同的地方,他坚持单服构Ӟ只是加入多线E设计承蝲提升Q上层倒是计划用一些类似无~地图这L技术,但是我对单服承蝲能力和容错能力依然表C怀疑。增加了出错几率和程序员调试旉Q当然这些我对他是没底气争辩的,他完整的l历了两个项目,l验是无法比的?/p> 我依然坚持我的底层多U程Q逻辑单线E架构,开发调试简单。单U程逻辑能力的不x用多服来分散。就我的l验来看Q这样对我目前的团队好处最大,因ؓ服务端逻辑E序员都是新手,写多U程E序l验不Q经常死锁、漏锁?/p> valgrind在内存泄露方面还是不太好用,也只能是能用Q但是其他方面倒是有一些意想不到的收获Q发C几处逻辑BUGQ比如我的服务端U程accept到新的socket后就创徏一个线E收发包Q但是停止时我先停了acceptU程Q不?a target="_blank">valgrind没事,挂上hang up在pthread_join位置上,郁闷很久Q改了顺序就完全ok?/p> 针对内存泄露Q我又找了一个很的工具memcheckQ效果出乎意料的好。我要的是对malloc/realloc的内存检是否free掉了。这个小工具也只有这个功能,在linux下面q能看到backtraceQ不错不错?/p> 说到linuxQ不知道是我的错觉还是什么,新底层在linux下跑的貌似确实要好一些,不是指速度Q那个是肉眼无法观察出来的,Ua的感觉,调试q程中的输出、gdbl的反馈{等。怎么形容呢。感觉FreeBSD比较,更偏E序员多一些。linux比较YQ替服务器管理员考虑的就多一些。纯感觉?/p> W一ơ重构服务端是刚来的时候,包括多服务端构架Q多U程底层Q因为时间紧Q用的是我上一个服务端的大体框Ӟ上一套服务器使用c++/stlport/boost/asioQ逻辑是简单了Q但是问题也隐藏h了,q次q脆使用Uc代码+libev。当底层搭徏完成E序员开始工作后Q我利用剩余旉重新考虑了一下服务端Q首先被我放弃的是一开始就考虑上万人承载、无~地囄{,把承载放在了比较合理的设?kQ实?k一l上Q经q和其他部门的沟通,在构架上也做了一些改动,避免了一处明昄瓉设计?/p> 再次重构依然采用多服务端构架Q做了简单的?nixq_Q目前在FreeBSD7.2和CentOS5.2上开发,底层是多U程Q逻辑单线E,客户端监听?个收Q?个发来处理IOQ服务端之间是一个连接一个线E,kqueue/epoll只针对客L监听使用Q监听用一个,4个收包线E一个线E用一个?/p> 逻辑U程׃个,单的从收到的包的队列里取出数据然后处理?/p> 都是些轻车熟路的东西Q写下来不到1000行代码,效果q需要压来测试?/p> 在一ơ次重构中,真正感觉C单的丽Q现在的代码qlibev都抛弃了Qkqueue/epoll单包装了一下,Uc的代码运用v来也渐渐得心应手Q没有Q何复杂的数据l构Q感觉很好?/p> valgrindl于q行了重大升U,虽然features上提的是支持MacOSQ但好歹和FreeBSD同源不是Q?.5.0版本在FreeBSD上用再也不需要mount /proc了,而且上个版本在FB7.2上根本用不成。这ơ表现的很好Q虽然误报依然一大堆Q但好歹有报不是。终于不在FB上写E序的时候提心吊胆了Q以前可是根本就没泄露检工兗反倒是CentOS上编译valgrindp|Q好像是一个define的问题,没去它?/p> 当个目ȝQ特别是比较大项目的理者还是很累的Q不q我觉得做管理要有所依,服务端编E我不会放下Q再忙每天都要抽出时间来写几D代码,其实理很简单,我的风格不喜Ƣ搞太多事情Q懒Q但是做理q样是不够的Q缺乏强沟通、强推动。总觉得团队少了最核心的一点什么。努力! C来吧。免得每ơ都要找借口ȝ镜店眼光 R –3.75 –2.00 X165 L –5.00 –2.00 X15 瞌68 Mark一下,免得30天后又忘了。改天有I研I一下多Agent的效率?/p> IncrediBuild是一个很强的分布式编译工P可以明显~短大型目~译旉Q但是hg菌Ӏ对于我q样的穷人来_只能使用试用版。试用期限是30天,30天到了即使删掉再安装仍然不能使用。给Xoreax写信甌廉试用期限Q也没给{复Q估计针对个Z们根本就不让廉试用?/p> 令h郁闷的是Q网上能扑ֈ的所有破解都是无效的。即使界面显C已l破解,但是旉一刎ͼ功能Ҏ不正常。根本不会把~译d分发l别人,只能本机~译了?/p> IncrediBuild 2.40的License?个文件CoordLicense.dat和AgentLicense.datQ分别位于Coordinator和Agent安装目录下,q两个文仉是RSA数字{q的Q除非修?exe文g中的解密密钥Q否则没法伪造License文g。但既然|上能找到的破解都无法正怋用,所以肯定不Ҏ搞定。对?.20应该也大同小异?/p> IncrediBuild在第一ơ运行的时候会向注册表中写入Y件到期的旉?/p> 2.40: HKCR\Interface\{E9B0227F-437C-4F7A-86D9-2676B83F359F}\ProxyStubClsid32 = {M1-M2-M3-T1-T2} 3.20: HKCR\Interface\{B7348B5D-B65D-4BF5-AF63-A3135249ACA7}\ProxyStubClsid32 = {M1-M2-M3-T1-T2} 卸蝲软g的时候ƈ不会卸蝲q个注册表项Q所以重新安装仍然不能用。最单的办法是卸载Y件后手动删除q个注册表项Q然后重新安装,又可以l箋试用。还有一U办法就是,我们定期更新上面q个注册表项的|把时间往后推UR还好该软g旉法q不复杂Q很Ҏ出来?/p> 比如说到期时间是2008.5.30?3:59:59Q可以写两行单的代码Q?/p> COleDateTime DateTime(2008, 5, 30, 23, 59, 59); DATE Date = (DATE)DateTime; 此时Date的值是39598.999988425923 (0x37BA E7FFDF55E340) T1Q?7BA T2QE7FFDF55E340 M1 = 37 * BA * E7 * FF = 23EAEB06 M2 = DF * 55 = 4A0B M3 = E3 * 40 = 38C0 q样我们可以把注册表中上述键值改为:{23EAEB06-4A0B-38C0-37BA-E7FFDF55E340} q样QY件到?008.5.31 00:00:00才会q期?/p>
今天解决了这个问题,参考以下网址Q?a >https://wiki.bnl.gov/dayabay/index.php?title=Synchronizing_Repositories?br>以下重新描述一下问题和解决ҎQ?br>1、在执行git svn dcommitӞ出现如下错误Q?br>Committing to https://svn.xxx.com/svn/projects/trunk ...
提交时发生合q冲H? 您的文g或目录”test/functional/xxx_controller_test.rb“可能已l过? The version resource does not correspond to the resource within the transaction. Either the requested version resource is out of date (needs to be updated), or the requested version resource is newer than the transaction root (restart the commit). at /usr/bin/git-svn line 450
2、这Ӟ重新执行以下步骤卛_Q?
]]>
kern.ipc.shmmax=134217728
kern.ipc.shmall=32768
kern.ipc.semmap=256
kern.ipc.semmni=256
kern.ipc.semmns=512
kern.ipc.semmnu=256
max_connections = 100
sudo make install clean
---
postgres:\
:lang=en_US.UTF-8:\
:setenv=LC_COLLATE=C:\
:tc=default:
---
and run `cap_mkdb /etc/login.conf'.
Then add 'postgresql_class="postgres"' to /etc/rc.conf.
To run PostgreSQL at startup, add
'postgresql_enable="YES"' to /etc/rc.conf
listen_addresses = '*'
# my lan
host all all 192.168.64.0/22 md5
su pgsql
psql -d postgres
alter user pgsql with password '******';
]]>开?/h5>
[user]
name = Robin Lu
email = ---@gmail.com
[color]
diff = auto
status = auto
branch = auto
[alias]
st = status
rb = svn rebase
ci = commit -a
co = checkout
初始化代码库
git svn clone -s svn-repository-url
git gc
git status
git branch -a
log
tmp
开发流E?/h5>
git checkout -b new_branch
git diff
git checkout path/filename
git add path/filename1
git add path/filename2
...
git commit -m "提交感言"
git add .
git commit -m "提交感言"
git commit -a -m "提交感言"
git diff --cached
git status
git rm file
git mv file newfile
提交到svn
git svn dcommit
git svn rebase --continue
~点
git rebase master
git checkout master
git merge new_branch
]]>
]]>
systat基本上是FreeBSD中最功能最多的pȝ监视命oQ显CCPU、I/O、内存、虚拟内存、mbufs、磁盘IO、网l状态等信息{?/p>
命oQ?/p>
systat [-display] [refresh-interval]
其中 display 为我们所要显C的信息目Q我们也可以在进?systat 后通过输入“:display”变更昄目Q?strong>refresh-interval 参数是需要多长时间采样一ơ系l数据输出到屏幕Q单位是U?/p>
实例Q?strong># systat -vmstat 1
命o解释Q显CCPU、I/O、内存、虚拟内存、mbufs、磁盘IO、网l状态等信息。信息采样刷新时间ؓ1U?/p>
以下为可用的 display 参数Q?/strong>
pigs 昄目前pȝ中?CPU 最多的行程名称。如果所有行E的 CPU 使用量未?100%Q则多出来的部䆾昄?IDLE?
icmp l计目前 ICMP 包的进出情形?
icmp6 昄 IPv6 ?ICMP 包q出情Ş?
ip 昄 IP 层的包l计?UDP 包信息?
ip6 ?IP 一P但只昄 IPv6 的封包?
tcp 昄 TCP 的封包统计?
iostat 昄 I/O 状况l计Qƈ分类为各U模式显C?
swap 昄目前各个储存I间上的虚拟内存的用情形?
mbufs 昄 mbufs 被用的状态?
vmstat q是我们最常用的显C模式,它显CZ最多的信息Q包?I/O、虚拟内存、mbufs、网l等信息?
netstat 昄|络的用情形?
ifstat 昄各个|络适配卡的使用情Ş?/p>
==================================================
最快的FreeBSD升办法Q?/p>
The freebsd-update(8) utility supports binary upgrades of i386 and amd64 systems running earlier FreeBSD releases. Systems running 7.0-RELEASE, 7.1-RELEASE, 7.2-BETA, 7.2-RC1, or 7.2-RC2 can upgrade as follows:
# freebsd-update upgrade -r 7.2-RELEASE
During this process, FreeBSD Update may ask the user to help by merging some configuration files or by confirming that the automatically performed merging was done correctly.
# freebsd-update install
The system must be rebooted with the newly installed kernel before continuing.
# shutdown -r now
After rebooting, freebsd-update needs to be run again to install the new userland components, and the system needs to be rebooted again:
# freebsd-update install # shutdown -r now
Users of earlier FreeBSD releases (FreeBSD 6.x) can also use freebsd-update to upgrade to FreeBSD 7.2, but will be prompted to rebuild all third-party applications (e.g., anything installed from the ports tree) after the second invocation of "freebsd-update install", in order to handle differences in the system libraries between FreeBSD 6.x and FreeBSD 7.x.
==================================================
d用户l:
pw group add coder
d新用P
adduser