小编Lee*_*ton的帖子

如何重命名SVN分支并更新现有沙箱中的引用?

我需要重命名一个SVN分支,所以我做了:

$ svn move https://server/repos/myrepo/branches/oldbranch \
    https://server/repos/myrepo/branches/newbranch

到目前为止,这么好 - 分支已经重命名.

麻烦的是,我们已经从这个分支检出了现有的沙箱,当我尝试更新时,我得到了这个错误:

$ svn update
svn: Target path '/branches/oldbranch' does not exist

一个相当不言自明的错误.经过快速搜索,我认为我找到了解决方案:在分支重命名后重新定位SVN工作副本

麻烦的是,当我尝试发出该命令时,我得到另一个错误:

$ svn switch --relocate https://server/repos/myrepo/branches/oldbranch \
    https://server/repos/myrepo/branches/newbranch
svn: Relocate can only change the repository part of an URL

据我所知,我使用的--relocate命令与Sander Rijken一样.有什么想法我得到这个错误?

svn branch rename

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

size_t和off_t之间的用法差异是什么?

除了每种类型可以容纳的值的大小之外,和之间使用的主要区别是什么?是否只是一种惯例,类型用于绝对大小和类型用于抵消?或者它比那更深?size_toff_tsize_toff_t

我正在编写一个包装类来启用大文件的编写,mmap我想知道最好的类型用于他们的参数.鉴于我想要写入> 4GB的文件,我很想将size_t用于所有内容,但这是最佳做法吗?(或者我应该off64_t为某些功能使用某些类型?)

例如,我的writeAt函数应该声明为:

MMapWriter::writeAt(off64_t offset, const void* src, size_t size)
Run Code Online (Sandbox Code Playgroud)

要么

MMapWriter::writeAt(size_t offset, const void* src, size_t size)
Run Code Online (Sandbox Code Playgroud)

c++ linux

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

用make删除前缀

有没有办法从字符串中删除前缀(在我的情况下是一个路径名)make

举个例子,假设我有字符串:

FILES = a/b/c.d a/b/e.f
Run Code Online (Sandbox Code Playgroud)

我想删除a/,并留下b/c.d b/e.f

我一直在使用的各种组合尝试dir,notdirbasenameGNU使手动,但没有似乎提供了一个很好的解决方案.

$(dir $(FILE))      # a/b a/b
$(notdir $(FILE))   # c.d e.f
$(basename $(FILE)) # a/b/c a/b/e
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现这样做的唯一方法是:

$( join $(basename $(dir $(FILE))), $(notdir $(FILE)) )
Run Code Online (Sandbox Code Playgroud)

哪个真的很难看,也很啰嗦.我真正需要的是某种$(removeprefix ...)功能.假设我知道a/要删除的prefix(),可以通过某种字符串操作来完成吗?

makefile gnu-make

31
推荐指数
2
解决办法
2万
查看次数

Bash参数的最大数量!= max num cp arguments?

我最近一直在复制和移动大量文件(~400,000).我知道可以在Bash命令行上扩展的参数数量有限制,所以我一直使用xargs来限制生成的数字.

出于好奇,我想知道我可以使用的最大参数数量是多少,我发现这篇帖子说它是系统相关的,我可以运行这个命令来找出:

$ getconf ARG_MAX
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,我回来的是:

2621440
Run Code Online (Sandbox Code Playgroud)

超过260万.正如我所说,我操作的文件数远远少于此 - 大约400k.我肯定需要使用xargs移动和复制这些文件的方法,因为我尝试使用普通mv * ...或者cp * ...得到'参数列表太长'错误.

那么,mvcp命令对我可以使用的参数数量有自己的固定限制(我在他们的手册页中找不到任何东西),或者我错过了什么?

linux bash command-line-arguments

29
推荐指数
2
解决办法
2万
查看次数

在csv文件中插入一行

我有一个巨大的csv文件(按太字节为单位).

现在,我想在顶部插入一行标题.

例如,如果input.csv如下所示:

 1,2,3,4
 22,3,23,1
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像

id1,id2,id3,id4
 1,2,3,4
 and so on
Run Code Online (Sandbox Code Playgroud)

我如何从shell,终端,awk,bash这样做?/

bash shell terminal awk sed

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

SVN hook pre-revprop-change无法正常工作

我知道之前已经多次询问过,但我相信我的情况有所不同.

我正在尝试向SVN存储库添加一个pre-revprop-change挂钩,以便对日志消息进行更改.

在我添加pre-revprop-change文件之前,我收到此错误:

$ svn propset -r 557 --revprop svn:log "New message!" https://myserver/repos/myrepo
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'log': 
Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
Run Code Online (Sandbox Code Playgroud)

没问题,我想.我会加上它:

$ cd /var/www/svn/myrepo/hooks

$ # Create the simplest hook possible
$ echo '#!/bin/sh' > pre-revprop-change
$ …
Run Code Online (Sandbox Code Playgroud)

linux svn version-control webdav selinux

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

为什么_have_初始化C++静态成员变量?

我知道你通常在.cpp文件中初始化一个静态成员变量.但我的问题是:为什么你什么?

这是一个例子:

#include <vector>

using namespace std;

class A {
    public:
        static vector<int> x;
};

main() {
    int sz = A::x.size();
}
Run Code Online (Sandbox Code Playgroud)

这给出了编译器错误: undefined reference to 'A::x'

但是,这个:

#include <vector>

using namespace std;

class A {
    public:
        static vector<int> x;
};

// Initialize static member
vector<int> A::x;

main() {
    int sz = A::x.size();
}
Run Code Online (Sandbox Code Playgroud)

编译并运行良好.

我能理解我是否使用默认构造函数之外的其他东西来初始化向量,但我不是.我只想创建一个大小为0的向量.当然,任何静态成员都必须在程序初始化时分配内存,那么编译器为什么不使用默认构造函数呢?

c++ static static-members

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

使用python创建excel兼容的CSV文件?

我正在尝试使用真正与Excel兼容的python创建一个csv文件(我使用Excel 2007,如果这有任何区别).

这是我正在尝试做的事情

import csv

data = [ ['9-1', '9-2', '9-3'] ]

fd = open('test.csv', 'wb')
try:
    writer = csv.writer(fd, dialect='excel', quotechar='"', quoting=csv.QUOTE_ALL)
    writer.writerows(data)

finally:
    fd.close()
Run Code Online (Sandbox Code Playgroud)

这将创建一个包含以下内容的csv文件:

"9-1","9-2","9-3"
Run Code Online (Sandbox Code Playgroud)

当我在Excel中加载它时,我得到列:

09-Jan  09-Feb  09-Mar
Run Code Online (Sandbox Code Playgroud)

[Grrr,谢谢Excel.说真的,引号有什么意义?]

现在,我已经读过其他地方,为了让Excel将字符串视为字面值,它们必须以等号为前缀="Like This".所以我真正想要的是:

="9-1",="9-2",="9-3"
Run Code Online (Sandbox Code Playgroud)

有没有办法用csvpython中的模块执行此操作?我猜它会涉及创建一个自定义方言,但我看不到任何能给我想要的结果的变量.

python csv excel

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

Bash PS1:来自外部命令的非打印字符的换行问题

我正在使用外部命令来填充我的bash提示符,每次评估PS1时都会运行该提示符.但是,当此命令输出不可打印的字符(如颜色转义码)时,我遇到了问题.这是一个例子:

$ cat green_cheese.sh 
#!/bin/bash
echo -e "\033[32mcheese\033[0m"

$ export PS1="\$(./green_cheese.sh) \$"
cheese $ # <- cheese is green!
cheese $ <now type really long command>
Run Code Online (Sandbox Code Playgroud)

与非打印字符的PS1提示处理的典型方法是将它们封闭在\[\]转义序列.问题是如果你从外部命令执行此操作,PS1解释器不会解析这些转义:

$ cat green_cheese.sh 
#!/bin/bash
echo -e "\[\033[32m\]cheese\[\033[0m\]"
$ export PS1="\$(./green_cheese.sh) \$"
\[\]cheese\[\] $ # <- FAIL!
Run Code Online (Sandbox Code Playgroud)

是否有一个特定的转义序列,我可以使用外部命令来实现所需的结果?或者有没有办法我可以手动告诉提示符将提示宽度设置为多少个字符?

假设我可以从外部命令打印任何我喜欢的内容,并且该命令可以非常智能(例如,计算输出中的字符).我也可以export PS1=...根据需要使命令变得复杂.但是,颜色的转义码必须来自外部命令.

提前致谢!

linux bash escaping prompt command-prompt

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

安全线程堆栈大小?

我正在编写一些产生相当多线程的代码(目前约为512,但未来可能会更高).每个线程只执行少量操作,因此我希望线程在系统上的开销保持在最低限度.

我正在设置堆栈大小pthread_attr_setstacksize(),我可以从中获得最小的允许堆栈大小PTHREAD_STACK_MIN.但我的问题是:使用PTHREAD_STACK_MIN线程堆栈大小是否安全?我如何计算我需要多少堆栈?是否有任何隐藏的开销需要添加到我的计算中?

此外,还有其他技术可以用来减少线程在系统上的负担吗?

c pthreads stack-size

5
推荐指数
3
解决办法
4760
查看次数