当我克隆出一个Mercurial存储库时,它通常会将文件显示为未修改时进行修改.当我执行以下步骤时,可能会发生这种情况;
$ hg clone <url>
$ cd project
$ hg st
.... large number of files with M at the start for modified
$ hg diff
.... no result.
Run Code Online (Sandbox Code Playgroud)
我认为这是因为文件在进程中已经更改了权限,所以看起来文件是不同的,因为当使用hg st时,hg实际上并不对每个文件执行diff.我知道这也可能发生在git中.
如果我做一个hg提交然后问题确实消失但这意味着我必须做一个空提交,这不是特别好.
我尝试过各种各样的事情,比如hg st --all来获取更多信息,它只显示一些文件被修改 - 不是全部.我看不到一个模式.
当我正在做我的hg克隆它发生在我使用的网络驱动器上,因为它备份 - 我不确定这是否可能导致文件权限更改?我目前正在运行Ubunut 9.04.
有什么方法可以让hg st以某种方式纠正自己?
有问题的项目(虽然它与其他人一起发生)是http://bitbucket.org/d0ugal/django-bursar/overview/,因为我正在寻找一些工作.
我一直在使用reportlab处理一些复杂的PDF输出.这些通常都很好,但在某些情况下仍然会出现LayoutErrors - 这些通常是因为Flowables在某些方面太大了.
事实证明调试它们非常困难,因为我通常没有比这样的信息更多的信息;
Flowable <Table@0x104C32290 4 rows x 6 cols> with cell(0,0) containing
'<Paragraph at 0x104df2ea8>Authors'(789.0 x 1176) too large on page 5 in frame 'normal'(801.543307087 x 526.582677165*) of template 'Later'
Run Code Online (Sandbox Code Playgroud)
这真的没那么有用.我理想地想知道的是这种事情的最佳调试和测试策略.
我没有一个特别的例子,所以它更一般的建议,上面的例外我已经解决了但它有点通过试验和错误(阅读;猜测和看到会发生什么).
假设你有一个像这样的dicts列表 {'id': 1, 'other_value':5}
也许吧;
items = [{'id': 1, 'other_value':5}, {'id': 1, 'other_value2':6}, {'id': 2, 'other_value':4}, {'id': 2, 'other_value2':3}]
Run Code Online (Sandbox Code Playgroud)
现在,您可以假设这是数据的一小部分.可能有数千人.这个结构也没有由我指定,它是给我的.
如果我只想获取ID,我可以这样做:
ids = [i[id] for i in items]
Run Code Online (Sandbox Code Playgroud)
但是,您会注意到原始数据中存在重复的ID.所以问题是; 你怎么能整齐地得到唯一的身份证?
我希望有类似的东西:
ids = [i[id] for i in items if not in LIST]
Run Code Online (Sandbox Code Playgroud)
但据我所知,没有办法访问生成器中的列表.
当然,我可以做一个for循环,并轻松地这样做.我只是想知道是否有更简洁的方法来做到这一点.