小编Chr*_*her的帖子

如何在git中找到引入特定行的提交?还是有更好的选择吗?

想象一下git项目中的一个类,它经历了1000次提交,一遍又一遍地重新访问.我有没有机会检查何时(在哪个提交中)特定的代码行被引入该类?

如果没有,是否有另一种方法可以找到我特别感兴趣的行集?

TY.

git

5
推荐指数
2
解决办法
512
查看次数

我可以将范围信息添加到在 exuberant ctags 中使用“--regex-<LANG>”生成的标签吗?

从技术上讲,我在 vim 中使用Tagbar来查看文件的标签,但这个问题应该普遍适用于 exuberant ctags,v5.8。

假设我有以下 python 文件,调用它foo.py:

class foo:
    def bar(baz):
        print(baz)
Run Code Online (Sandbox Code Playgroud)

让我们运行ctags一下:ctags foo.py。生成的tags文件如下所示:

!_ some ctags version / formatting stuff not worth pasting
bar foo.py  /^    def bar(baz):$/;" m   class:foo
foo foo.py  /^class foo:$/;"    c
Run Code Online (Sandbox Code Playgroud)

我感兴趣的是第二行的最后一个字段class:foo。这就是函数的范围bar()。如果我在 vim 中使用 tagbar,它会相应地将函数嵌套在类中。

现在假设我在我的~/.ctags. 事实上,我正在添加对此木偶文件的支持:

class foo {
    include bar
}
Run Code Online (Sandbox Code Playgroud)

假设我使用以下~/.ctags参数。“导入”正则表达式很丑陋(呃……对于正则表达式来说很丑陋),但对于这个例子来说它已经完成了足够的工作:

--langdef=puppet
--langmap=puppet:.pp
--regex-puppet=/^class[ \t]*([:a-zA-Z0-9_\-]+)[ \t]*/\1/c,class,classes/
--regex-puppet=/^\ \ \ \ include[ \t]*([:a-zA-Z0-9_\-]+)/\1/i,include,includes/
Run Code Online (Sandbox Code Playgroud)

这会在我的文件中生成以下标记 …

ctags exuberant-ctags tagbar

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

Git-tf签入失败:commit [commitid]有多个父项.使用--deep选项在TFS中创建历史记录

似乎既没有--deep也--shallow没有效果.尝试git-tf checkin --deep在TFS中对新文件夹(当前为空)执行错误时收到错误.我有一个git repo,有很多历史.作为git-tf的一部分,我很乐意保留/迁移到TFS.

我的理解是,checkin --deep每次提交都会在TFS中创建一个类似的变更集.问题是,git repo中的任何提交似乎都是合并的结果(我们在这个repo中有很多合并)似乎使git-tf命令非常不满意并报告我在标题中提到的错误消息(使用[commitid]的异常被替换为实际的提交id(例如9a26d8)).

我不确定我是否完全错过了这里的船或什么.是否有可靠的方法将历史上多次合并提交的预先存在的git repo移植到TFS?我希望这是一个原始的功能/修复.我希望我错过了什么.我对TFS非常不满意,但不像git那样经验丰富,所以对任何帮助表示赞赏.

git tfs branching-and-merging tfs2012 git-tf

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

我可以通过boto中的instance_id过滤卷吗?

我正在尝试使用Python的'boto'模块将卷从一个实例复制到另一个实例.该过程的一部分是识别附加到实例的卷.有几种方法可以解决这个问题.例如,我可以使用列表理解:

from boto.ec2 import connect_to_region
conn = connect_to_region('us-east-1')
all_volumes = conn.get_all_volumes()
instance_volumes = [v for v in all_volumes if v.attach_data.instance_id = "<instanceID>"]
Run Code Online (Sandbox Code Playgroud)

这是有效的,并且适用于我的目的.尽管如此,我很好奇,如果有使用方式get_all_volumes()的内置过滤,以获得相同的结果.例如,如果我在搜索"Name"标签与某个模式匹配的实例,我可以这样做:

filters = {'tag:Name': '<name>'}
reservations = self.conn.get_all_instances(filters=filters)
instances = [i for r in reservations for i in r.instances]
Run Code Online (Sandbox Code Playgroud)

get_all_volumes()有一个类似的过滤器参数,但我不能让它工作boto.ec2.volume.Volume.attach_data.instance_id.我是否遗漏了一些明显的东西,或者是因为不可能的卷而被instance_id过滤?

boto amazon-web-services

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

如何在 pip 中安装具有公共依赖项的私有模块?

我找到了一些与dependency_links相关的答案,但不幸的是它们还没有为我工作。我正在写一个 python 模块。它存储在私有 pypi 存储库中,并依赖于存储在同一私有存储库和公共 pypi 存储库中的一些依赖项:

setup(
# some other setup
name = 'mymodule',
install_requires = [
    'kazoo',
    'privateDependencyA',
    'privateDependencyB'
],
dependency_links = [
    "http://my.private.repo/eggs/#privateDependencyA",
    "http://my.private.repo/eggs/#privateDependencyB"
])
Run Code Online (Sandbox Code Playgroud)

我存储mymodule在我的私人存储库中,因此我尝试安装它:

pip install -i http://my.private.repo/eggs/ mymodule
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但找不到kazoo,这是一个公共图书馆。因此我尝试使用该-f标志:

$ pip install -i http://my.private.repo/eggs/ -f http://pypi.python.org/ mymodule                                                                                                                                                                                                                                      
Downloading/unpacking mymodule
  Downloading mymoudle-<version>.tar.gz (unknown size): 3.1kB downloaded
  Running setup.py egg_info for package mymodule

Downloading/unpacking kazoo (from mymodule)
  Could not find any downloads that satisfy the requirement …
Run Code Online (Sandbox Code Playgroud)

python pip pypi

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

如何在 .gitconfig 文件中插入和检索自定义字段?

我有以下.gitconfig:

[user]
name = name
email = email@email.com
custom_field = AAA
Run Code Online (Sandbox Code Playgroud)

使用 git 的内置命令可以轻松获取姓名和电子邮件。

如何获取 custom_field 的值?

git

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

如何在python3中释放通过__setitem__验证的'dict'的子类?

我正在使用python3.3。2.x的pickle协议中可能不存在此问题,但我尚未进行实际验证。

假设我创建了一个dict子类,该子类在每次更新键时都会计数。像这样:

class Foo(dict):
    def __init__(self):
        self.counter = 0

    def __setitem__(self, key, value):
        print(key, value, self.__dict__)
        if key == 'bar':
            self.counter += 1
        super(Foo, self).__setitem__(key, value)
Run Code Online (Sandbox Code Playgroud)

您可以这样使用它:

>>> f = Foo()
>>> assert f.counter == 0
>>> f['bar'] = 'baz'
... logging output...        
>>> assert f.counter == 1
Run Code Online (Sandbox Code Playgroud)

现在让我们腌制和腌制:

>>> import pickle
>>> f_str = pickle.dumps(f)
>>> f_new = pickle.loads(f_str)
bar baz {}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "test.py", line 133, …
Run Code Online (Sandbox Code Playgroud)

python pickle python-3.x python-3.3

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

新Git分支没有先前提交的更改

我目前的分支看起来像:

     D  
    /
H--A--B--C  
Run Code Online (Sandbox Code Playgroud)

我试图找出如何生成一个新的git分支,这将使新的git repo看起来像:

     D  
    /
H--A--B--C  
    \
     C  
Run Code Online (Sandbox Code Playgroud)

这可能吗?我想过使用重置,但这意味着C的变化也会丢失,所以寻找替代方案.

git branch repository git-revert

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