在帮助朋友解决git问题的同时,我不得不介绍一个需要与分支完全分离的master
分支.这个分支的内容确实与master
分支上开发的内容有不同的起源,但它们将master
在以后合并到分支中.
我记得从底层向上阅读John Wiegley的Git,分支本质上是一个遵循某个约定的提交的标签,以及如何将提交绑定到文件树,并且可选地绑定到父提交.我们使用git的管道创建了对现有存储库的无父提交:
所以我们摆脱了索引中的所有文件......
$ git rm -rf .
Run Code Online (Sandbox Code Playgroud)
...从tarball中提取目录和文件,将其添加到索引中...
$ git add .
Run Code Online (Sandbox Code Playgroud)
...并创建了一个树对象......
$ git write-tree
Run Code Online (Sandbox Code Playgroud)
(git-write-tree
告诉我们创建的树对象的sha1sum.)
然后,我们提交了树,没有指定父提交......
$ echo "Imported project foo" | git commit-tree $TREE
Run Code Online (Sandbox Code Playgroud)
(git-commit-tree
告诉我们创建的提交对象的sha1sum.)
...并创建了一个指向新创建的提交的新分支.
$ git update-ref refs/heads/other-branch $COMMIT
Run Code Online (Sandbox Code Playgroud)
最后,我们回到master
分公司继续在那里工作.
$ git checkout -f master
Run Code Online (Sandbox Code Playgroud)
这似乎按计划进行.但这显然不是我推荐给刚刚开始使用git的人的一种程序,温和地说.有没有更简单的方法来创建一个与目前存储库中发生的所有内容完全无关的新分支?
出于学习目的,我正在研究在Perl中构建事件驱动程序的想法,并注意到如果注册为事件处理程序的子例程在失败时只能为其自身安排另一个调用它可能会很好时间.到目前为止,我想出了类似的东西:
my $cb;
my $try = 3;
$cb = sub {
my $rc = do_stuff();
if (!$rc && --$try) {
schedule_event($cb, 10); # schedule $cb to be called in 10 seconds
} else {
do_other_stuff;
}
};
schedule_event($cb, 0); # schedule initial call to $cb to be performed ASAP
Run Code Online (Sandbox Code Playgroud)
有没有办法让sub中的代码可以访问该sub的coderef,所以我可以不使用额外的变量?我想安排这样的初始通话.
schedule_event( sub { ... }, 0);
Run Code Online (Sandbox Code Playgroud)
我首先考虑使用caller(0)[3]
,但这只给了我一个函数名称(__ANON__
如果没有名称),而不是附加了pad的代码引用.
我已经使用git工作了几个月,我发现大部分能够改善我日常工作的事情可以归结为分布式VCS中的灵活性和缺乏强制执行的默认策略.
很多人似乎都有同样的感受,并建立在这种灵活性的基础上
您使用自己喜欢的DVCS实现了哪些很酷的想法?
我正在尝试编写一些XS代码,它将一个库公开给Perl代码作为可以写入的流接口.get_stream
下面的
函数应该是一个准备和返回PerlIO对象的构造函数.我想我只需要
Write
和Close
方法,所以我把所有其他功能插槽留空了.
typedef struct {
struct _PerlIO base;
mylib_context* ctx;
} PerlIOmylib;
/* [...] */
PERLIO_FUNCS_DECL(PerlIO_mylib_funcs) = {
.fsize = sizeof(PerlIO_funcs),
.name = "mylib",
.size = sizeof(PerlIOmylib,
.Write = mylib_write,
.Close = mylib_close,
};
/* XS below */
PerlIO*
get_stream (SV* context_obj)
CODE:
mylib_context* ctx = (mylib_context*) SvIV (SvRV (context_obj));
PerlIO* f = PerlIO_allocate (aTHX);
f = PerlIO_push (aTHX, f, PERLIO_FUNCS_CAST(&PerlIO_mylib_funcs), "a", NULL);
PerlIOSelf(f, PerlIOmylib)->ctx = ctx;
PerlIOBase(f)->flags |= PERLIO_F_OPEN;
RETVAL = f;
OUTPUT: …
Run Code Online (Sandbox Code Playgroud) 我一直想知道是否有一种更好,更简洁的方法将字符串拆分为字符
@characters = split //, $string
Run Code Online (Sandbox Code Playgroud)
并不难读,但不知何故,使用正则表达式对我来说太过分了.
我想出了这个:
@characters = map { substr $string, $_, 1 } 0 .. length($string) - 1
Run Code Online (Sandbox Code Playgroud)
但我发现它更丑陋且不太可读.将字符串拆分为字符的首选方法是什么?
我记得迅速采用given .. when
,say
,//
,和智能匹配运算时的Perl 5.10苏醒过来.
你认为Perl 5.12.0引入了哪些最有用的修补程序和功能?
该perlpod
文档告诉我,我可以使用L<scheme:...>
或链接到URL
L<text|scheme:...>
,甚至列出L<The Perl
Home Page|http://www.perl.org/>
作为示例.
第一种情况对我来说很好:pod2html
转
L<http://example.com/>
Run Code Online (Sandbox Code Playgroud)
成
<a href="http://example.com/">http://example.com/</a>
Run Code Online (Sandbox Code Playgroud)
但它失败了
L<example|http://example.com/>
Run Code Online (Sandbox Code Playgroud)
刚刚变成了
<em>example</em>
Run Code Online (Sandbox Code Playgroud)
以及警告:
/usr/bin/pod2html: : cannot resolve L<example|http://example.com/> in paragraph 2.
Run Code Online (Sandbox Code Playgroud)
我会期待类似的东西
<a href="http://example.com/">example</a>
Run Code Online (Sandbox Code Playgroud)
要生产.我怎样才能做到这一点?
更新所以这似乎是Pod::Html
Alan Haggai Alavi指出的一个错误.有解决方法吗?
我rss2email
用于将大量RSS源转换为邮件以便于使用.也就是说,我在使用它,因为它在一个可怕的方式打破了今天:在每次运行时,它只是给了我这个回溯:
Traceback (most recent call last):
File "/usr/share/rss2email/rss2email.py", line 740, in <module>
elif action == "list": list()
File "/usr/share/rss2email/rss2email.py", line 681, in list
feeds, feedfileObject = load(lock=0)
File "/usr/share/rss2email/rss2email.py", line 422, in load
feeds = pickle.load(feedfileObject)
TypeError: ("'str' object is not callable", 'sxOYAAuyzSx0WqN3BVPjE+6pgPU', ((2009, 3, 19, 1, 19, 31, 3, 78, 0), {}))
Run Code Online (Sandbox Code Playgroud)
我能够从这个回溯构建的唯一有用的事实是,保持其所有配置和运行时状态的文件~/.rss2email/feeds.dat
以rss2email
某种方式被破坏.显然,rss2email
读取其状态并cPickle
在每次运行时将其转储回来.
我甚'sxOYAAuyzSx0WqN3BVPjE+6pgPU'
至在巨型(> 12MB)feeds.dat
文件中找到了包含上述字符串的行.对于我未经训练的眼睛,转储似乎没有被截断或以其他方式损坏.
我可以尝试哪些方法来重建文件?
在Debian/unstable系统上,Python版本是2.5.4.
编辑
Peter Gibson和JF Sebastian建议直接从pickle文件加载,我之前尝试过.显然,需要一个Feed
定义的类 …
我最近试图理解一个C++程序,这个程序是由我认为具有函数式编程背景的人编写的:例如,他已经声明了一个他广泛使用的闭包类,它有点类似于函数式编程中的闭包.另一个班级被称为后卫,但我还没有弄清楚它有什么好处.它似乎附加了某种清理功能.
我看到一个名为guard的概念的唯一语言是Erlang,但这并不像我发现的代码那样远程.在其他语言中存在这样一个概念,C++代码的作者可能提到过?
我一直在修改隐藏绑定数组背后的IPC机制的一些实现细节的想法.目标是能够在服务器端执行类似的操作:
# setup code here. Client provides a function name, we find
# a function to deal with the request:
my $coderef = lookup($method);
local @_;
tie @_, 'My::IPC';
@ret = &$coderef;
Run Code Online (Sandbox Code Playgroud)
然后,My::IPC
类将根据需要从管道/套接字读取序列化对象(通过SHIFT
or FETCH
方法触发).
我想为服务器函数的作者提供一些方法来编写他可以访问IPC的函数,以便编写本地函数,即:
sub f1 {
while (my $param = shift) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
... 以及 ...
sub f2 {
my ($foo, $bar, $baz, %flags) = @_;
...
}
Run Code Online (Sandbox Code Playgroud)
f1
旨在能够处理可能大于可用RAM量的数据流 - 只要每个单独的对象在反序列化后适合RAM,一切都很好.f2
用于"更简单"的函数,其中参数列表可以插入RAM.
为了支持这两种情况下,该TIEARRAY
constuctor和SHIFT
,
FETCH
和 …