小编Ben*_*ers的帖子

使用Git将提交拆分为较小的提交?

我复制了一个文件并同时对它进行了一系列更改(即在一次提交中).然后我继续在后续提交中进行更改.我现在想将该提交分成两个 - 一个只是将文件复制到新位置,另一个修改该文件.我该怎么办?如果这是最近的提交,那将很容易,但现在回到历史.

git

12
推荐指数
0
解决办法
1854
查看次数

为什么我不能将反向迭代器转换为前向迭代器?

好吧,我知道为什么,这是因为没有转换,但为什么没有转换呢?为什么转发迭代器可以转向反转迭代器而不是反过来呢?更重要的是,如果我想这样做,我该怎么办?是否有一些适配器允许您使用前向迭代器向后迭代?

std::vector<int> buffer(10);
std::vector<int>::iterator forward = buffer.begin();
std::vector<int>::reverse_iterator backward = buffer.rbegin();
++forward;
++backward;
std::vector<int>::iterator forwardFromBackward = std::vector<int>::iterator(backward); // error! Can't convert from reverse_iterator to iterator!
std::vector<int>::reverse_iterator backwardFromForward = std::vector<int>::reverse_iterator(forward); // this is fine
Run Code Online (Sandbox Code Playgroud)

c++ iterator

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

Git存储库,git目录存储在别处

我很抱歉,如果这是重复的,我搜索谷歌和SO,并找不到任何类似的东西,因为它是一个相当通用的搜索词集!

我想要的是让.git目录在工作树之外.

我需要这样做,因为它是一个使用其他版本控制软件的项目中的"秘密"git存储库,不幸的是它的设置方式是在一个根目录中有多个项目(我希望每个都是一个git存储库),以及想要从项目目录中清除文件的构建脚本.到目前为止,我一直在对根目录进行版本控制并忽略所有其他项目目录,因此其中一个项目是版本化的,但我现在想要对另一个项目进行版本化,并且显然不能在根目录中有多个git存储库(或者我可以?那将是一个很好的替代答案).如果可能的话,将.git目录放在磁盘上的其他位置将是一个很好的解决方案.

git

9
推荐指数
2
解决办法
2587
查看次数

在Active Directory中查找用户的CN

我正在尝试查找可以访问或控制Active Directory中所有用户的用户的基本DN,以便将其放入我的LDAP中.

通常有人会给我这个,看起来像 DC=domain,DC=company,DC=com

但管理员不可用,所以我不知道如何在Active Directory中找到它.

我正在寻找一步一步找到这个信息.要打开哪个树和选项卡以及如何构建它.我的用户是:admin,服务器是:controller-16.domain.company.com 但我不知道他们是否添加了OU或组或其他东西

我知道这个:

CN=admin,DC=domain,DC=company,DC=com
Run Code Online (Sandbox Code Playgroud)

不起作用.也不是:

DC=domain,DC=company,DC=com
Run Code Online (Sandbox Code Playgroud)

如果Base DN在Gawor的LDAP浏览器上运行,那么它将适用于我的LDAP.

ldap active-directory distinguishedname

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

我怎样才能将类的填充字节归零?

我想将类的填充字节设置为0,因为我在字节级保存/加载/比较/散列实例,并且垃圾初始化填充在每个操作中引入了非确定性.

我知道这将实现我想要的(对于简单的可复制类型):

struct Example
{
    Example(char a_, int b_)
    {
        memset(this, 0, sizeof(*this));
        a = a_;
        b = b_;
    }
    char a;
    int b;
};
Run Code Online (Sandbox Code Playgroud)

我不喜欢这样做,原因有两个:我喜欢构造函数初始化列表,我知道将位设置为0并不总是与零初始化相同(例如,指针和浮点数不一定具有零值这都是0位).

顺便说一下,它显然局限于可以轻易复制的类型,但这对我来说不是问题,因为我上面列出的操作(在字节级加载/保存/比较/散列)无论如何都需要简单的可复制类型.

我想要的是像这个[神奇]片段:

struct Example
{
    Example(char a_, int b_) : a(a_), b(b_)
    {
        // Leaves all members alone, and sets all padding bytes to 0.
        memset_only_padding_bytes(this, 0);
    }
    char a;
    int b;
};
Run Code Online (Sandbox Code Playgroud)

我怀疑这样的事情是可能的,所以如果有人能提出一个非丑陋的选择......我全都耳朵:)

c++ padding

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

如何将现有git存储库的"范围"扩展到父目录?

我在目录a/b /中有一个git存储库,我想扩展它,因此也存储对/和子目录的更改.有什么方法可以做到这一点吗?

git

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

在return语句中将指针强制转换为固定大小的数组

提出这个问题的最简单方法是使用一些代码:

struct Point
{
    int x;
    int y;
    int z;

    int* as_pointer() { return &x; }        // works
    int (&as_array_ref())[3] { return &x; } // does not work   
};
Run Code Online (Sandbox Code Playgroud)

as_pointer编译,as_array_ref不.演员似乎是有序的,但我无法弄清楚合适的语法.有任何想法吗?

c++ arrays

6
推荐指数
2
解决办法
3941
查看次数

在可执行文件之间传输数据

我在Windows上用C++编写了两个可执行文件.我在一个中生成一些数据,并希望调用另一个可执行文件来处理这些数据.我可以将数据写入文件,然后在其他可执行文件中读取它,但就磁盘I/O而言,这似乎相当昂贵.这样做的更好方法是什么?这似乎是一个简单的问题,但谷歌只是没有帮助!

假设数据大约为100MB,并且在需要发送之前完整生成(即不需要流式传输).

混合32位和64位进程时可以获得奖励积分的答案.

c++ windows process data-sharing

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

在重新分配时始终建议使用std :: vector是否公平?

来自Bjarne Stroustrup的常见问题解答

如果您觉得需要realloc()-而且很多人都这样做-那么请考虑使用标准库向量。

我将通过同意std::vector更好的原因(因为许多原因)来开始我的问题,而我个人总是选择使用它,而不是使用C内存分配编写自己的动态数组。

但是std::vector由于C ++没有等效的内存,内存会随着内存的增长而碎片化realloc编辑澄清一下,我知道std::vectors的存储是连续的,不会碎片化,我的意思是分配和取消分配导致的内存空间碎片化,这realloc可以避免扩展现有分配)。那么总是推荐它公平realloc吗?小心翼翼,难道您不能编写类似于std::vectorC分配函数那样工作的东西,它可以在不移动其地址和复制现有元素的情况下增加其内存,使其在碎片和性能方面都达到或超过或提高吗?

与此相关的(奖励问题!),为什么 C ++没有与之等效的东西realloc?忽略一种专注于性能的语言,这似乎很奇怪。Bjarne的FAQ中的部分恰好具有该标题(没有强调),但是答案并未解决“为什么”的问题。只是偶然的遗漏吗?是否有与如何一些基本的不相容new/ delete工作?它真的不能真正带来实际的好处吗?

编辑:好的,所以我忽略了C的复杂性realloc- std::vector不能使用重写,realloc因为它仅适用于POD,不抛出等。在某些情况下,也许编写一个仅用于POD的容器来处理棘手问题是个好主意。无论如何,更有趣的问题变为:将std::vector受益于C ++的等价物realloc,它在(或多或少)已经在这里得到了回答:

当容量增加时std :: vector是否具有移动对象的能力?或者,分配器可以“重新分配”吗?

可悲的是,答案似乎是“是,但是标准委员会没有投票赞成”。希望如此

c++ realloc

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

将 git .pack 文件分割成更小的包?

我有一个 git 存储库,我在其中运行了它:

git reflog expire --expire=now --all && git gc --prune=now --aggressive
Run Code Online (Sandbox Code Playgroud)

该存储库现在有一个约 5GB 的 .pack 文件。

我正在尝试运行一个似乎无法处理这么大的文件的工具。(仅供参考: https: //github.com/git-lfs/git-lfs/issues/2557

我想将存储库的包文件重新打包成较小的文件以避免此错误。

它看起来git-repack可能会做我想做的事情,但是当像这样运行时它不会做任何事情:

$ git repack --max-pack-size=1g
Nothing new to pack.
Run Code Online (Sandbox Code Playgroud)

我看不到任何类型的“强制”选项。git-unpack-file我想也许我需要先解压,但和的文档git-unpack-objects看起来有点低级。

我怎样才能做到这一点?我认为询问社区是最好的选择,因为我所做的每个“实验”都需要很长时间才能运行,而且无论如何我可能会找错树!谢谢 :)

git

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