小编Foo*_*ooF的帖子

解决失败的"git svn clone"(需要完整的历史记录)

我想将Subversion存储库子目录(module此处表示)转换为具有完整历史记录的git存储库.svn copy我的Subversion存储库的历史记录中有许多操作(Subversion人们称之为分支).发布策略是每次发布或其他分支创建后,旧URL保持未使用状态,新URL将替换旧URL以包含工作.

最好的是,通过我的阅读,似乎应该这样做:

$ git svn clone --username=mysvnusername --authors-file=authors.txt \
    --follow-parent \
    http://svnserver/svn/src/branches/x/y/apps/module module
Run Code Online (Sandbox Code Playgroud)

(其中branches/x/y/描绘了最新的分支).但我得到一个错误,看起来像这样:

W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/svn/src/!svn/bc/100/branches/x/y/apps/module' path not found
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
Run Code Online (Sandbox Code Playgroud)

(更新:添加--no-minimize-url上述选项不会删除错误消息.)

目录module被创建和填充,但是svn copy不会导入超过最新提交的Subversion历史记录(当我预期数百个时,创建的git存储库最终只有两次提交).

问题是,如何在出现这种情况的情况下导出完整的Subversion历史记录?

可能的原因

  1. 搜索错误消息,我发现:git-svn匿名结帐失败,其中-s 链接到此Subversion问题:http://subversion.tigris.org/issues/show_bug.cgi? id = 3242

    我通过阅读理解,Subversion …

svn git git-svn

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

Linux终端输入:从终端截断行读取用户输入,限制为4095个字符

在bash脚本中,我尝试read在设置后使用内置命令从标准输入读取行IFS=$'\n'.如果我将输入粘贴到读取,则会以4095个字符的限制截断这些行.这种限制似乎来自终端阅读,因为这非常好用:

fill=
for i in $(seq 1 94); do fill="${fill}x"; done
for i in $(seq 1 100); do printf "%04d00$fill" $i; done | (read line; echo $line)
Run Code Online (Sandbox Code Playgroud)

我在Python脚本中遇到了相同的行为(不接受来自终端的4095输入,但是从管道接受):

#!/usr/bin/python

from sys import stdin

line = stdin.readline()
print('%s' % line)
Run Code Online (Sandbox Code Playgroud)

即使C程序也是如此,使用read(2):

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    char buf[32768];
    int sz = read(0, buf, sizeof(buf) - 1);
    buf[sz] = '\0';
    printf("READ LINE: [%s]\n", buf);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在所有情况下,我输入的时间不能超过4095个字符.输入提示停止接受字符.

问题1:有没有办法以交互方式从Linux系统(至少Ubuntu 10.04和13.04)中读取超过4095个字符的终端?

问题2:此限制来自何处?

受影响的系统: …

linux terminal input

15
推荐指数
2
解决办法
6136
查看次数

是否有命令行工具从C或C++文件中提取typedef,结构,枚举,变量,函数?

我希望有一个命令行工具从C或C++源文件中提取定义或声明(typedef,structure,enumeration,variable或function).另外一种替换现有定义/声明的方法也很方便(在用户提交的脚本转换提取的定义之后).是否有这样的通用工具,或者是这种工具的一些合理的近似值?

脚本性和与用户创建的脚本或程序连接的能力在这里很重要,尽管我在学术上也对GUI程序感到好奇.Unix/Linux阵营的开源解决方案是首选(尽管我对Windows和OS X工具也很好奇).主要的语言兴趣是C和C++,但更通用的解决方案会更好(我认为我们不需要超级准确的解析功能来查找,提取和替换程序源文件中的定义).

示例用例(额外 - 用于好奇心灵):

  1. 给定深度嵌套的structs和这些类型的变量(数组)初始化,假设需要通过添加或重新排序字段或以更易读的格式重写变量/数组定义来更改结构定义,而不会引入手工劳动产生的错误.这可以通过提取旧的初始化,然后使用脚本/程序编写新的初始化来替换旧的初始化来实现.
  2. 用于实现代码浏览工具 - 提取定义.
  3. 装饰代码生成(例如记录功能条目/返回).
  4. 脚本代码结构化(例如,提取这个和那个东西并放在不同的地方而不做更改 - 版本控制提交注释可以记录命令以执行此操作以使其明显且可验证没有任何改变).

替代问题:如果有一个工具来告诉定义的位置(开始和结束行就足够了 - 我们甚至可以假设我们感兴趣的所有定义/声明都在他们自己的行中),那么它只是一个简单的练习手指灵巧地写一个程序

  1. 提取定义,
  2. 替换定义,甚至
  3. 提取定义,运行由命令行选项(或编辑器)指定的程序

    • stdin(或从临时文件)接收所需的提取定义,
    • 执行转换(编辑),和
    • 输出新定义stdout(或将它们保存到给定的临时文件)

    被执行程序取代.

因此,主要的,更具挑战性的问题是找到定义的开始和结束行.

备注标签:更准确的标签比code-generationcode-transformation,但它不存在.

c refactoring automation code-generation program-transformation

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

管理依赖进行中的git功能分支/分支集

最近,我似乎有这样一个重复的场景,即正在开发多个功能分支,其中一个功能分支(feature-b如下图所示)取决于另一个未完成功能(开发中feature-a)的支持:

---o---o--o                    master
       |
       +---o---o---o           feature-a
                   |
                   +----o---o  feature-b
Run Code Online (Sandbox Code Playgroud)

每当我修改feature-a(包括交互式重定基以修复功能的错误),我需要重订feature-bfeature-a.这些是本地分支,所以我可以随意修改它们.

我经常遇到以下情况:

             master                                         testing
---o---o--o-------------------------------------------o---o
       |              feature-a                      .   .
       +---o---o---o                                .   .
                   |           feature-b           .   .
                   +----o---o .....................   .
                   |           feature-c             .
                   +----o---o .......................
Run Code Online (Sandbox Code Playgroud)

其中测试分支是正在开发的所有(相关)特征的组合,通过合并其上的所有相关特征分支(在图片masterfeature-b,feature-c- 和暗示feature-a)产生.

目前,特别是如果有更复杂的功能分支关系,我gitk一直打开可视化分支关系,并维护shell脚本自动执行此变基,但这种方法似乎很脆弱,而且是一般的麻烦.我想知道的是:

  1. 有描述和甚至的方式自动检测分支关系,然后用一个命令尝试重新执行所描述的关系(在上述简单例子中,转换后feature-a通过衍合或添加新提交的头部,进行自动重订feature-b上新的负责人feature-a).
  2. 用于将一组分支重新分配到其他提交的GUI工具(如果冲突会阻止操作,那么只是给出错误)
  3. 管理这个分支混乱的其他想法?所涉及的意外复杂性耗费了太多时间并且消耗了过多的脑力.

git workflow feature-branch

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

使用erlang打开设备文件

有没有办法在erlang中打开终端设备文件?

我在Solaris上,我正在尝试以下::

Erlang (BEAM) emulator version 5.6 [source] [64-bit] [async-threads:0] [kernel-poll:false]

/xlcabpuser1/xlc/abp/arunmu/Dolphin/ebin
Eshell V5.6  (abort with ^G)
1> file:open("/dev/pts/2",[write]).
{error,eisdir}
2> file:open("/dev/null",[write]).
{ok,}
3>

从上面可以看出,erlang文件驱动程序在打开空文件时没有问题,但是没有打开终端设备文件!

由于文件驱动程序能够打开空文件,因此无法得出结论.

有没有其他方法可以打开终端设备文件?

谢谢

erlang file-io serial-port file

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

在C linux中查询MX记录

在Linux上的C中是否有任何函数可以查询MX记录(如gethostbyname).

c linux dns smtp

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

Syslog RFC 5424客户端库 - C++

您是否知道任何体面的允许(LGPL)许可(或不,在这种情况下我将其用作参考)C++中的网络系统日志库(RFC5424)(甚至C,绑定并不是很难编写).

我找到了liblogging.org,但它在2005年8月被淘汰了.

想法?

c c++ logging syslog

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

在Pycharm 2016.3中安装pip

我已升级到新版本的Pycharm。在终端中,它说的bash-3.2$不是我的用户名。当我尝试安装库时,它说找不到pip命令:

bash: pip: command not found
Run Code Online (Sandbox Code Playgroud)

所以我安装了pip:

bash-3.2$ sudo easy_install pip
Searching for pip
Best match: pip 8.1.2
pip 8.1.2 is already the active version in easy-install.pth
Installing pip script to /usr/local/bin
Installing pip3.5 script to /usr/local/bin
Installing pip3 script to /usr/local/bin

Using /Library/Python/2.7/site-packages
Processing dependencies for pip
Finished processing dependencies for pip</i>
Run Code Online (Sandbox Code Playgroud)

好吧,现在我所要做的就是使用pip安装库,对吗?

但是,这发生了:

bash-3.2$ pip install pandas
bash: pip: command not found
Run Code Online (Sandbox Code Playgroud)

我不明白我该怎么做才能真正安装pip。还是我应该使用sudo easy_install [library]

python bash pip pycharm

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

Tomcat的默认错误页面位于哪里?

Tomcat 的默认错误页面位于哪里或者如何自定义它们?我希望美化和改变Tomcat当前错误页面的外观。

java tomcat

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

什么时候POSIX线程取消不立即?

POSIX为线程取消类型指定了两种类型:PTHREAD_CANCEL_ASYNCHRONOUSPTHREAD_CANCEL_DEFERRED(设置pthread_setcanceltype(3))确定何时pthread_cancel(3)生效.通过我的阅读,POSIX手册页对这些内容并没有太多说明,但Linux手册页中有以下内容PTHREAD_CANCEL_ASYNCHRONOUS:

线程可以随时取消.(通常,它会在收到取消请求后立即取消,但系统不保证这一点.)

我很好奇系统的含义并不能保证这一点.我可以很容易地想象这种情况发生在多核/多CPU系统中(在上下文切换之前).但是单核系统呢:

  1. 请求取消并启用取消(pthread_setcancelstate(3))并取消类型设置为PTHREAD_CANCEL_ASYNCHRONOUS?时,我们是否可以立即取消线程?
  2. 如果是的话,在什么条件下会发生这种情况?

我主要对Linux(LinuxThreads/NPTL)感到好奇,但更普遍的是关于POSIX标准兼容的查看此取消业务的方式.

更新/澄清:这里真正的实际问题是在调用pthread_cancel()目标线程已启用取消并设置为键入的位置后立即销毁的资源的使用PTHREAD_CANCEL_ASYNCHRONOUS!所以关键在于:在这种情况下取​​消的线程是否有一个很小的可能性在上下文切换后继续正常运行(即使是很短的时间)?

感谢Damon的回答,减少了与下一个上下文切换相关的信号传递和处理问题.

更新2:我回答了我自己的问题,指出这是一个不好的问题,并且应该从根本上不同的概念层面解决基础程序设计.我希望这个"错误"的问题对于那些想知道异步取消的奥秘的人有用.

linux signals pthreads cancellation

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