小编fir*_*ush的帖子

git log给我看了什么?

我错过了什么.我曾经使用过Mercurial,并会查看回购的修订历史记录hg log.简单:显示在回购中所做的所有更改集.

现在我正在使用git.我对学习新工具感到非常兴奋,但我对我所看到的东西感到困惑git log.我做了一些更改并做了一些提交.另一个人也创建了一个修订版并且已经提交了.我从他的存储库中取出.我做了一个git log和他的变更集(可能在git中称为"commit")不在列表中.如果我明确列出他的哈希值(即git log <hash>),它会显示在顶部.因此,它在我的回购,但我不明白Git是如何决定告诉我什么,当我把它做git log.

我看一下git help log,但它在描述中说"它显示了提交日志".从我的角度来看,这是不正确的.或者可能不完整,因为实际上它显示了它们的一些子集.但我不知道它是什么子集,也不知道它如何决定展示什么.

有人可以git log向我解释一下吗?

更新

顺便说一句:我尝试过的第一件事就是 - 所有,我现在看到很多人都提出这个建议.但这也没有显示出来:

$ git log | grep fb2a17c5fb08498e7f2ab364931fddc379be106f 
$ git log --all | grep fb2a17c5fb08498e7f2ab364931fddc379be106f 
$ git log fb2a17c5fb08498e7f2ab364931fddc379be106f  | grep fb2a17c5fb08498e7f2ab364931fddc379be106f 
commit fb2a17c5fb08498e7f2ab364931fddc379be106f
Run Code Online (Sandbox Code Playgroud)

git

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

不使用--reintegrate与svn合并回到主干的后果

我是颠覆的新手.在过去的一个月里,我做了一些改变,并将它们合并到了主干.一切似乎都很好 - 我的变化按预期传播.但是今天我重新阅读了关于合并的内容并看到了这一点,在将您的更改合并到主干时说了以下内容:

现在,使用svn merge和--reintegrate选项将分支更改复制回主干.

以后几段:

注意这次我们使用了--reintegrate选项.该选项对于将分支中的更改重新集成到其原始开发线中至关重要 - 不要忘记它!

我想我第一次没有仔细阅读过的东西.

所以,我之前的合并回到trunk后似乎犯了一个错误,因为我没有使用--reintegrate选项.这有什么后果?有什么我需要解决的吗?

如果它有用,我的工作流程看起来像这样:

  1. 从主干复制以创建个人分支.
  2. 查看个人分支.
  3. 变更和提交.
  4. 获取trunk的工作副本.
  5. 将我的分支合并到trunk的工作副本(再次,没有--reintegrate).
  6. 提交合并.
  7. 删除我的分支.

svn

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

返回元组时如何转移unique_ptr的所有权?

我正在尝试返回一个元组,其中一个元素是std::unique_ptr.我想将所有权转移unique_ptr给来电者.我该怎么做呢?

#include <tuple>
#include <memory>
#include <iostream>

using namespace std;

class B
{
public:
    B(int i) : i_(i) {}

    int getI() const { return i_; }
private:
   int i_;
};

tuple<unique_ptr<B>, int>
getThem()
{
    unique_ptr<B> ptr(new B(10));
    return make_tuple(ptr, 50);
}

int
main(int argc, char *argv[])
{

    unique_ptr<B> b;
    int got = 0;

    tie(b, got) = getThem();

    cout << "b: " << b->getI() << endl;
    cout << "got: " << got << endl;

    return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c++ unique-ptr c++11

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

Python argparse:如何引用其中包含破折号的参数

我正在使用argparse,我想用破折号指定位置参数。argparse 似乎让我这样做。事实上,它显示在 parse_args() 的命名空间中,但我不知道如何引用相应的值。这是一个最小的示例(注意“a-string”中的破折号):

#!/usr/bin/env python3

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('a-string', help='A string')

args = parser.parse_args()

# AttributeError: 'Namespace' object has no attribute 'a_string'
#print("Argument was: " + args.a_string)

# TypeError: 'Namespace' object is not subscriptable
#print("Argument was: " + args['a-string'])

# AttributeError: 'Namespace' object has no attribute 'a'
#print("Argument was: " + args.a-string)

# I give up. Ask StackOverflow.
Run Code Online (Sandbox Code Playgroud)

我最初想用add_argument的dest参数来解决这个问题,但如果我将 dest 添加到位置参数,我会得到“ValueError:dest 为位置参数提供了两次”。我如何引用这个位置参数的值?

python argparse

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

svn相当于hg in

在我以前工作的地方,我们使用Mercurial进行版本控制.我有一份新工作,我们在那里使用Subversion.我是Subversion的新手.

我发现自己想知道自从我在远程仓库结帐后已经检查了什么.在Mercurial中,我会使用hg in.这将显示远程可用的变更集集,但不会显示在我的本地仓库中.我如何在Subversion中做这样的事情?也就是说,如何找到自上次合作/更新以来所做的更改?

从我的阅读,看起来svn更新使用了很多,但我不希望我的工作副本被修改与谁知道什么.我想在拉动之前看看那里有什么(如果有的话).

谢谢您的帮助.

svn mercurial

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

可以使用 constexpr 变量的地址吗?

我有一个变量,其地址作为第四个参数传递给setsocketopt。请注意,此参数被声明为常量指针 ( const void *optval)。

在我提交供审查的补丁中,我将该变量的声明更改为 static constexpr。此更改的审阅者对此表示担忧:他认为是否始终可以获取 constexpr 的地址是值得怀疑的。他建议我将其设为常量。在谷歌搜索后,我找不到太多关于 constexpr 变量地址的信息以及对此的担忧。有人可以解释一下与 constexpr 变量的地址有关的保证以及使用它的注意事项(如果有)吗?

如果它有帮助,这里是代码(我添加的static constexpr,这只是int之前的代码):

static constexpr int ONE = 1;
setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, &ONE, sizeof(ONE));
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ pointers memory-address constexpr c++11

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

std :: map是否可以包含对构造函数的引用?

有没有办法从std :: map指向构造函数?我想用我想要使用的代码执行以下操作,#if 0但我似乎无法使其工作:

#include <map>
#include <functional>

using namespace std;

class Base { };
class A : public Base { };
class B : public Base { };

enum class Type { A, B, };

#if 0
using type_map_t = std::map<Type, std::function<Base*()>>;
type_map_t type_map = {
    {Type::A, &A::A},
    {Type::B, &B::B},
};
#endif

Base*
getBase(Type t)
{
#if 0
    auto constructor = type_map[t];
    return constructor();
#else
    switch(t)
    {
        case Type::A:
            return new A();
        case Type::B:
            return new B(); …
Run Code Online (Sandbox Code Playgroud)

c++ stdmap c++11 std-function

3
推荐指数
2
解决办法
904
查看次数

在vim中如何在单词前后放置字符

在vim中,在单词前后放置相同字符的字符命令序列是什么。我认为有办法做到这一点,但我忘记了。

说我有这个词candy,我想做到=candy=。没有比进入两次插入模式更有效的命令序列吗?

vim

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

如何得出在gdb中处于什么偏移量的成员?

GCC 8.3给我以下警告:

error: '*((void*)& request +128)' may be used uninitialized in this function [-Werror=maybe-uninitialized]
Run Code Online (Sandbox Code Playgroud)

我想知道那个偏移量是什么成员。碰巧我有一个核心,可以像这样打印结构化数据以供请求:

(gdb) p *(Request*)request
Run Code Online (Sandbox Code Playgroud)

这将打印出Request的成员,但是有很多,并且从视觉上我并不明显,根据编译器警告,哪个成员的偏移量为128。这不是我第一次尝试在gdb中查找与对象开始位置有一定偏移的成员。通常x/136bx request,在这种情况下,我会尝试通过手动找出问题,然后比较两个输出。但是我想知道:是否有一种方法可以告诉gdb为它以结构化方式打印的每个成员打印偏移量?也就是说,它既可以打印结构化表示形式,又可以为每个成员添加偏移量注释?或者,如果不是那样,相对于打印原始字节并尝试查找该偏移量的字节与哪个成员对齐,是否有一种更聪明的方式让我找到该偏移量的成员?

c++ gcc gdb

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

为什么除了最后一帧外,在拆解的每个帧都没有调用命令

我正在通过反汇编gdb输出分析核心验尸。我对此并不陌生,所以我对自己正在看的东西的理解仍在不断增长。对我来说,一个直接的困惑是,当我在不同的帧之间浏览并查看反汇编输出时,我看不到callq命令正在运行,正如我对所有非帧0帧所期望的那样。导致第0帧的每个帧都不应该调用函数吗?

(gdb) f 0
(gdb) disassemble
...
=> 0x0000000001b0af10 <+16>:    mov    (%rdi),%rdx
...
End of assembler dump.
(gdb) info registers rdi
rdi            0x0      0
Run Code Online (Sandbox Code Playgroud)

很有道理:崩溃是由于ptr取消引用无效而发生的。现在,让我们一举成名,然后在此处查看反汇编输出:

(gdb) up
(gdb) disassemble
...
=> 0x0000000001b1c01b <+315>:   test   %al,%al
...
Run Code Online (Sandbox Code Playgroud)

什么?上面的框架正在运行测试?它不应该调用在第0帧中反汇编的函数吗?我有什么误会?

这是从GCC 4.8编译C ++代码生成的x64程序集。

c++ callstack gdb x86-64 disassembly

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