小编hoc*_*chl的帖子

如何构建包含多个库和应用程序的存储库

我已经赢得了使用Git或Subversion重构/重新创建现有代码库的任务.在这种特殊情况下,存储库历史记录不一定重要.在分析了这种情况之后,我发现了一些确定好布局的问题.我已经阅读了很多博客和帖子,但我仍然不确定什么是最好的布局.

现有存储库包含一组包含文件,一组部分依赖于彼此的库,其中许多依赖于包含文件集.此外,还有两个依赖于库集的应用程序项目.此外,还有一组脚本可以使用其中一个应用程序和一些其他配置信息.我画了一个图表来澄清情况:

    +---------->include files
    |                ^
    |                |
library A -----> library B <----- library C <----- library D
  ^  ^                                |                ^
  |  |                                |                |
  |  +--------------------------------+                |
  |                                                    |
application 1        application 2 --------------------+
  ^
  |
script -----> configuration information
Run Code Online (Sandbox Code Playgroud)

目标是建立一个布局,其中每个组件可以尽可能独立地开发,并且具有一个发布(对于外部客户),其包含定义的标签版本的所有组件的集合,以便可以回溯到时间并为特定版本构建软件.

我想出了以下结构:

trunk/
  include/
  lib/
    library A/
    library B/
    library C/
    library D/
  app/
    application 1/
    application 2/
tags/
  1.0/
    include/
    lib/
      library A/
      library B/
      library C/
      library D/
    app/
      application 1/
      application 2/
  1.1/
    include/ …
Run Code Online (Sandbox Code Playgroud)

svn git version-control repository

6
推荐指数
1
解决办法
1205
查看次数

静态库和SCons的传递依赖性

在为两者构建两个库和测试程序时,我偶然发现了一个看似简单的问题.

问题:我有两个静态库,libA和libB,libB依赖于libA.我不想明确地将使用libB的所有程序链接到libA,我希望SCons看到如果程序链接到库B,它也应该链接到库A.

我已经构建了一个简单的例子来说明这个问题.由于我找不到合适的文件托管服务器并且这与编程有关,因此我创建了一个小型SVN存储库:

svn checkout https://example-repository.googlecode.com/svn/trunk example-repository
Run Code Online (Sandbox Code Playgroud)

或者你可以在这里下载一个tarball .

c python dependencies scons

5
推荐指数
1
解决办法
1056
查看次数

合并两个不相关的Mercurial存储库后如何调整历史记录?

我刚刚根据这里给出的建议合并了两个存储库.由于两个存储库完全不相关,我使用

hg convert --filemap fm rep1a rep1b
hg convert --filemap fm rep2a rep2b
Run Code Online (Sandbox Code Playgroud)

将存储库1中的文件移动到子目录a,将文件从存储库2移动到子目录b.现在两个存储库中没有冲突的文件,所以我将它们组合在一起.

结果是一个存储库,其中包含两个父项的合并修订,一个包含存储库1的历史记录,另一个包含存储库2的历史记录.很好!

mb--ma--2f--2e--2d--2c--2b--2a
      \
       -------------------------1e--1d--1c--1b--1a     
Run Code Online (Sandbox Code Playgroud)

现在我真正想要的是补丁按时间排序的历史.这没问题,我使用了hg convert --datesort src dst,一切看起来都不错:

mb--ma--2f------2e--2d------2c--2b--2a
      \
       -----1e----------1d--------------1c--1b--1a     
Run Code Online (Sandbox Code Playgroud)

我现在想要的最后一件事是所有补丁都被合并,以便它们具有线性依赖图,有效地消除了合并修订版"ma".我认为解决方案是对一些修订进行修改,但我缺乏理解哪个版本需要重新修改.我试验了一些,但似乎没有像预期的那样工作.一次尝试就产生了一些奇怪的问题:

use (c)hanged version or (d)elete?
Run Code Online (Sandbox Code Playgroud)

我怎么能做最后一步?

编辑:我部分解决了这个问题.由于rebase似乎搞砸了(或者我没有完全理解问题是什么),一个不同的approch似乎工作得更好(正如Lasse所建议的):重写历史.

我所做的是将存储库再次拆分为原始的两个部分,使用hg convert with filemap,直到合并修订版.然后我使用hg移植将一个存储库移植到另一个存储库中.瞧,线性历史!

2f--2e--2d--2c--2b--2a--1e--1d--1c--1b--1a
Run Code Online (Sandbox Code Playgroud)

在此之后,我移植了我在合并之后做的更改集.结果:实际工作副本与具有两个历史时间轴的备份没有差异.到现在为止还挺好!

mb--2f--2e--2d--2c--2b--2a--1e--1d--1c--1b--1a
Run Code Online (Sandbox Code Playgroud)

现在修订版没有按时间排序,这是理想的,所以我尝试了一个hg convert --datesort repository.src repository.sorted,但结果仍然具有相同顺序的变更集,如上所示.如果有人知道如何做到这一点,我可以手工分类.

编辑2:我终于解决了这个问题,我创建了一个新的存储库

mkdir repository_c
cd repository_c
hg init .
Run Code Online (Sandbox Code Playgroud)

我按正确顺序拉入所有补丁,使用hg transplant:

hg transplant --source ../src 0:53
hg transplant --source ../src 70
hg transplant --source ../src 54:55
hg transplant --source …
Run Code Online (Sandbox Code Playgroud)

merge mercurial repository

5
推荐指数
1
解决办法
1244
查看次数

在vim的一行中搜索第n个匹配项

我正在编辑一个Wiki文件,我想在两列之间添加一个新列。

| *No* | *Issue* | *File* | *Status* | 
| 1 | blah | foo | open |
| 2 | blah1 | foo1 | close |
Run Code Online (Sandbox Code Playgroud)

现在在第3列和第4列之间,我想插入另一列,如果可以在第四个匹配项中搜索“ |” 给定行中的字符,我可以将其替换为“ | |”。如何使用vim做到这一点?

最终结果将是

| *No* | *Issue* | *File* | | *Status* | 
| 1 | blah | foo | | open |
| 2 | blah1 | foo1 | | close |
Run Code Online (Sandbox Code Playgroud)

vim search editor match

5
推荐指数
0
解决办法
814
查看次数

如何枚举python 64位模块

我有一段代码可以在32位上很好地工作,并且我正在尝试使其也可以在64位上工作。运行该进程时,sizeof(structure)似乎返回了无效的选项,并且该结构未正确填充64位。我需要做什么才能使此功能成为64位?

from ctypes import *
from ctypes.wintypes import *
import sys


# const variable
# Establish rights and basic options needed for all process declartion / iteration
TH32CS_SNAPPROCESS = 2
STANDARD_RIGHTS_REQUIRED = 0x000F0000
SYNCHRONIZE = 0x00100000
PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF)
TH32CS_SNAPMODULE = 0x00000008
TH32CS_SNAPTHREAD = 0x00000004

#class MODULEENTRY32(Structure):
#    _fields_ = [ ( 'dwSize' , DWORD ) , 
#                ( 'th32ModuleID' , DWORD ),
#                ( 'th32ProcessID' , DWORD ),
#                ( 'GlblcntUsage' , DWORD ),
# …
Run Code Online (Sandbox Code Playgroud)

python dll ctypes

5
推荐指数
1
解决办法
1785
查看次数

从文件中读取列表列表作为python中的列表列表

我以列表列表的形式收集数据,并将数据写入文本文件.文本文件中的数据看起来像

[[123231,2345,888754],[223467,85645]]
Run Code Online (Sandbox Code Playgroud)

我想把它读回来并存储在我的程序列表中.但是当我read()从文件中创建并尝试创建一个平面列表时,它将所有内容都作为一个字符串,并且解释完全改变,并且我无法查询我在阅读作为python中的正常列表列表后获得的结果.

有人可以帮我阅读文件并以与列表列表相同的格式存储吗?

谢谢!

python file list

5
推荐指数
1
解决办法
8150
查看次数

matlab中的字符串startWith

我想只得到字符串的开头,是否有一个等效的matlab允许说:startsWith('It-is')就像在java中一样?

谢谢

string matlab-deployment

5
推荐指数
1
解决办法
8734
查看次数

说服熔炉忽略特定的代码行?

我正在使用Meld来发现两组相似的fortran代码之间的差异。在许多情况下,两个文件之间的唯一区别是自动版本号。这条线看起来似乎有太多应有的差异,并且令人困惑。

有问题的自动版本号行类似于

 !! $Id: filename.F90 v#### YYYY-MM-DD HH:MM:SSx username $  
Run Code Online (Sandbox Code Playgroud)

是否有可能说服Meld忽略所有看起来像此行的行?我不想让Meld忽略所有评论,因为评论中的某些差异很重要。

regex fortran meld

5
推荐指数
1
解决办法
2316
查看次数

动态创建类实例的最有效方法是什么?

我不知道从一开始我将拥有多少个类实例,所以我需要动态创建它们,但我还想保持代码整洁和可读.

我在考虑做这样的事情:

names = ['Jon','Bob','Mary']

class Person():
    def __init__(self, name):
        self.name = name

people = {}
for name in names:
    people[name] = Person(name)
Run Code Online (Sandbox Code Playgroud)

它有效,但我似乎无法找到任何人在网上这样做的例子(虽然我看起来不多).有什么理由我应该避免这样做吗?如果是这样,为什么以及什么是更好的选择呢?

python performance class dynamic

4
推荐指数
1
解决办法
5131
查看次数

CSS:当父元素已经100%时,使内部div的高度为100%

我已经尝试了很长时间了,到目前为止我读过和google的所有帖子都没有帮助我,所以我希望你们其中一个人能给我一个提示:

我有一个由页眉,页脚和内容组成的布局.这个布局在整个页面上高高耸立(这已经花了我一段时间才弄明白).到现在为止还挺好.但现在我想content-div尽可能向下延伸到页脚的开头.无论我做什么,它都不起作用,它或者保持文本的长度,或者它变成整个窗口的大小,隐藏页脚并生成滚动条.我读到了制作它的解决方案position:absolute,但我不希望这样.

这是一个例子:http://jsfiddle.net/N9Gjf/1/

你真的会帮助我!

这是css:

html, body {
    height:100%;
    text-align:center;
}

#wrapper {
    min-height:100%;
    height:100%
    overflow: hidden;
    width:800px;
    margin: 0 auto;
    text-align: left;
    background-color:lightblue;
}   

#footer {
    background-color: silver;
    height:1.5em;
    width:800px;
    margin: -1.5em auto;
}

#header {
    background-color: orange;
    height:100px;
}

#content {
    background-color: limegreen;
}

* {
    margin:0;
    padding:0;
}
Run Code Online (Sandbox Code Playgroud)

这是html:

<div id="wrapper">

    <div id="header">
        <p>Header</p>
    </div>
    <div id="content">
    INHALT  
    </div>

</div>

<div id="footer">
    <p>Footer</p>
</div>
Run Code Online (Sandbox Code Playgroud)

html css

4
推荐指数
1
解决办法
3万
查看次数