谢谢,你写的太棒,太详细了!!!
不过有一点貌似不对,也是之所以我有这个问题的缘故,引用 Progit 中的一段话:
You can create your own tree. Git normally creates a tree by taking the state of your staging area or index and writing a tree object from it. So, to create a tree object, you first have to set up an index by staging some files. To create an index with a single entry — the first version of your text.txt file — you can use the plumbing command update-index.
你把建立树对象的这个步骤延后到提交 commit 之后,但是应该是 add 之后,这个树对象已经存在了。只不过不是以 objects 下 可见的形式存在的。但是 git 有办法获取他的 sha1 (这里指的是那个入口), 否则,git diff --cached, 就没办法工作了。我觉得一定有一个 sha1, 也许就在那个 .git/index 文件内。
我理解错了,哈哈~~ 我又细细看了下,貌似就是你说的那样~~
再说下之前的需求,以前 git diff 总是以 `单文件' 的形式,打开代码比较工具,常常是打开一堆 TAB, 一点都不直观,我要这个 SHA1, 最初,我是希望通过 git archive 的方式,打包成 tar, 然后直接比较 tar 文档的目录结构,一目了然。不过后来发现,获取 index 以及 获取当前目录下的文件 (所有被索引文件以及除去所有被 ignore 文件这两步不太好搞), 所以,最后我干脆用拷贝到临时目录的形式来实现了。所以这个需求也就解决了。
不行,无效的 SHA1
楼主是一个让我佩服的人,很早的时候,我记得楼主给代码让我至今印象深刻。
不过对于 Mac , 楼主可能并不了解 Linuxer 所说的问题在那里。
首先对一句话表示不解:
只喜欢用 Mac 自带的 Terminal,功能足够够用了,我的效率非常的高,因为我把精力都放在工作上,而不是配置上,我不需要太多的功能,我只要一个简单的操作环境,这样我更能专注于工作,软件并不需要太多复杂的功能,那些都是累赘,简化人的操作,不正是软件最初的目地吗?
给我的感觉,你是一个关注于 真是效率,然后喜欢 CLI 的人,如果如你所说,更专注于工作,而且喜欢 CLI, 那么 Linux 谁说不是更好的选择呢?大把的图形界面,华丽胡哨的东西,只会让你分心,让你去娱乐,让你去陶醉。
我猜测最大的问题是:苹果底层使用的不是 Linux, 而是 FreeBSD, 这也就罢了,貌似,苹果专注的地方并不是让 FreeBSD 更多的去兼容 Linux, 而是在 GUI 方面提供更好的 Feeling. 这是作为一个 Unix Like 开发人员期望看到的吗?毕竟你不是普通使用者。
Linux 和 FreeBSD 我估计已经有很多的不同了,大多数开源软件都是 Linux 下开发的。我不相信,把 Linux 下面的一个包,拿到 Mac 编译有你说的那么方便。苹果那么自大的公司,怎么可能把其他自大的大神的东西 (我指的 Linus 和 Stallman), 更何况 (据说,我没验证), Mac 版的 FreeBSD 已经和传统的 FreeBSD 差别已经很大了吧。
当然你要非说 且图,Photoshop , 甚至优秀的第三方软件 之类的,Mac 当然好了,不过,就不在于程序员写代码 这个范畴了。
最后结论是:如果关注于 Mac 开发的生态链,那当然非 Mac 不用了。如果你非要用 Linux 下原生的东西,例如 C 而不是 Object C, 甚至是 Ruby 而不是 MacRuby, 如楼主这样专注于开发效率的人,至少没有任何理由说:Mac 比 Liunx 好太多!, 因为如果如你所说,两者效率应该一样,甚至 Linux 会给你更多,更纯粹,让你更专注于工作的选择。
BTW: 还有一个个人的选择,就是习惯小红点。
谁敢说对于纯开发人员来说,小红点效率比 Mac 的触摸板差?至少我八个指头,几乎不用离开 ASDF JKL; ...
靠,有关递归的描述,我前几天刚发过一个贴,讨论。
很明显,我之前就属于那种:
对递归的效率也有很大的误解,认为递归没有循环来得高效。
我觉得 rails 中,尤其是 大把的 gem 中,很多都是 新瓶装老酒, 这是一个很严重的问题。屁大点功能,就是一个 gem, 这对于 Rails 初学者很不利。
来来回回 gem 之间的依赖,组合,再加上彼此之间的冲突,所花的时间,其实有时候远比自己来实现花的功夫多。当然,我指的是那些 小gem, 当然有很多很不错的 gem, 功能强大,经过严格测试,不过不太少了。
又是王垠,在我刚开始用 Emacs 那会儿,搜索中文 Emacs 资料,时常会看到这个名字。
你如果在 Window 下用,Emacs Server 是无效的。
如果在 Linux 或 Mac 下,Emacs Server 就是先启动一个 Emacs Deamon, 然后稍后运行 Emacs 不是通过 Emacs 这个命令了,因为 Emacs 作为一个 Deamon 已经被启动了,只需要运行任意多个 emacsclient 连接到那个 Emacs server 就可以启动一个 Emacs 窗口,最大的优势是:秒开, 速度可比 Vim 快多了。
Emacs23 之前最让人诟病的一个原因是 Emacs 启动慢,不过现在变成优点了. 前面讲的不准确,之前这个最大的缺点在 Emacs23 之后就不再存在了,相反,因为 daemon 的缘故,启动速度非常快,反倒成为 Emacs 的优点了
嘿,我在 21 楼 说的问题,不知道描述清楚没有?
不知道能否通过改 second-sel 源码实现一个全局的 secondary-kill-ring ?
#18 楼 @reus
个人表示,只要找对E文的关键字, Google 结果就没有压力...
有时候,找关键字不是那么容易呀。毕竟又不是中文,就算中文,还不一定找到呢。
#19 楼 @doitian 好一阵子都常见你上线,貌似最近有空呀?
正好向几位请教一个还算蛮棘手的问题:@willmouse @doitian @reus
现在我 C-w 快捷键,是复制内容到 secondary-region-ring,(就是和 kill-ring 一样的另一个 ring) 这其中使用了一个插件叫做:second-sel.el 来实现的一个 ring, 之所以这样绑定,是因为:C-w 之后,可能还会有 backward-kill-word, kill-line 之类的操作,这个时候,我可以不受干扰的通过一个自定义快捷键 C-M-y, 来直接粘帖 secondary-region 中的内容。
现在问题是:secondary-region-ring, 只要一退出 buffer, 再重新打开,ring 里面的内容就没有了。有时候,我希望复制一段内容到 second-region-ring 当中,哪怕我退出 buffer, 但是在稍后的其他新打开的 buffer 当中,都可以被 反复的 通过 C-M-y 粘帖。
反正就这么个功能,正常的删除,粘帖,就用 kill-ring, 但是最好有一个 其他的 (全局的)ring, 专门使用 C-M-y 来粘帖, 目前我用的这个 second-sel.el 中,这个 secondary-region-ring 不是全局的。只要一退出 buffer, 内容就消失了。
我要解决的问题是:
如果我希望更改 second-sel.el , 将那个 local ring 改为 global ring , 思路该如何解决?(最好谁有空帮我改下也行,如果能实现的话)
类似需求你们是如何处理的?是否有其他插件?或者自己写的插件?我想遇到一个 需要反复粘帖的情形,没有人愿意没完没了的 M-y 去吧?
貌似你说的那个 awesome 应该就是,我曾经想安装,不过貌似 Slackware 不满足的依赖太多了... 我不想因为这个小工具,再装一堆东西,呵呵,所以没装。
没问题呀。可是无法完全发挥 Server 的优势,如果不是 Terminal, 也就用不到 dvtm 之类的东西了。
不过只开一个终端也有好处,就是不太乱,像我,有时候在一个桌面下开 EmacsClient 太多,头就晕了。
#10 楼 @reus 我最近才开始用 tabbar, 不过只是在 shell-mode 下 才开启。换多个 shell 方便一些。
对了,问下你们,在 X-windows 下,用一个快捷键,将当前打开的所有 Windows , 上下对齐重排,或者左右重排,类似的软件叫什么。最好是独立于 具体的 Windows 管理器,就像 Xbindkeys 一样,不管 KDE, 还是 Gnome, 又或者 XFCE, 都可以用。