这里有很多关于将文件夹从一个存储库移动到新存储库的帖子git filter-branch
; 我需要做的是将单个文件移动到新的存储库中.
我已经创建了新的存储库,并将文件系统中的旧存储库添加为"远程",并创建了一个新的"根提交"(只需为新的单文件项目添加自述文件).现在我需要移植与此特定文件有关的提交到新的root-commit上.
(我应该提一下,这个文件在任何时候都没有像任何其他文件一样被修改;我怀疑这可能会使这个任务变得更容易.)
我真的想把更多的东西放在身上来解释这个问题......但标题真的涵盖了这一切.据我所知,librt
更"官方"(它是标准的一部分libc
?),但我也记得看到Node.js使用libeio
.我应该花更多的时间研究一下?便携性怎么样?他们的API有何不同?
(如果有一个代表≥1,500的人可以在这个问题上添加标签"libeio"和"librt",我会很感激,因为我不能.)
如果我的程序是通过命令行管道到另一个程序,有没有办法让我仍然确定其宽度?
我正在使用Node,如果这是相关的,虽然任何一般的POSIX解决方案都是受欢迎的(我可以弄清楚如何将它自己移植到我的环境中.)目前,我可以process.stdout.columns
在Node中使用; 但那与之相关联process.stdout
,在这种情况下是管道.
我正在尝试自动化 git-repository 上的特定操作(typedoc
生成 TypeScript 文档的命令);但我需要该命令才能“查看”实际进行的更改。任何未暂存的更改都需要从命令中“隐藏”。
我当前的方法是尝试自动化 git-stash,以便它隐藏任何未跟踪的文件和未暂存的更改,然后运行命令,然后弹出该存储。该脚本的核心内容是:
stash_working=_no
git update-index --refresh
if git diff-index HEAD -- .':!Documentation/'; then
stash_working=_yes
fi
if [ "$stash_working" != "_no" ]; then
git stash push --include-untracked --keep-index -m "AUTOMATED STASH" \
-- .':!Documentation/'
fi
typedoc
typedoc_exit_status=$?
if [ "$stash_working" != "_no" ]; then
git stash pop
fi
exit $typedoc_exit_status
Run Code Online (Sandbox Code Playgroud)
不幸的是,这并没有按预期工作:特别是,尽管“未包含”在存储中,但存储的更改......在弹出时会干扰自身(?)。例如,如果分阶段内容(我确实想要在文档中看到)包含此行,
* This is some fake documentation for testing purposes.
Run Code Online (Sandbox Code Playgroud)
...但是有一个未分阶段的更改将其更新为
* THIS IS A CHANGE TO THAT …
Run Code Online (Sandbox Code Playgroud) (如果之前有人询问过,我很抱歉;搜索功能似乎已被破坏:结果区域完全是空白的,即使它表示在Chrome,FireFox和Safari中有几页结果...
所以,我只是在学习C++ ......而我正在阅读的这本书在解释构造函数方面做得非常糟糕,我能够掌握它们.到目前为止,我已经非常了解其他所有内容,但我无法弄清楚构造函数的语法实际上是如何工作的.
例如,我被告知以下将导致构造函数调用指定的超类的构造函数:
class something : something_else {
something(int foo, double bar) : something_else(int foo) {}
};
Run Code Online (Sandbox Code Playgroud)
另一方面,在描述如何初始化const
成员时,本书后面使用了相同的语法:
class something : something_else {
private: const int constant_member;
public: something(int foo, double bar) : constant_member(42) {}
};
Run Code Online (Sandbox Code Playgroud)
那么......呃......那到底是怎么回事?语法rv signature(param) : something_else(what);
究竟意味着什么?我无法弄清楚它something_else(what)
是什么,与周围的代码有关.它似乎具有多重含义; 我确信必须有一些它所对应的语言的基本元素,我只是无法弄清楚是什么.
编辑:另外,我应该提一下,what
前面的例子中有时候是一个参数列表(所以something_else(what)
看起来像一个函数签名)是非常令人困惑的......有时候是一个常量值表达式(所以something_else(what)
看起来像一个函数调用).
现在,继续:多继承和构造函数怎么样?如何指定调用父类的构造函数以及默认调用哪些构造函数?我知道,默认情况下,以下两个是相同的......但是我不确定涉及多重继承时的等价物是什么:
class something : something_else {
//something(int foo, double bar) : something_else() {}
something(int foo, double bar) {} …
Run Code Online (Sandbox Code Playgroud) 我看到了我在标题中指定的错误,这里现有的解决方案似乎都没有帮助,所以我希望有人能让我了解正在发生的事情。
我在我的项目中使用 Typescript 和 Node。TS 编译一切都很好......我最终得到了以下预期:
projectHome/
dist/
schema/
schema.js
index.js
Run Code Online (Sandbox Code Playgroud)
当我node ./dist/index.js
从项目主页运行时,出现错误无法找到从“/home/me/projectHome/dist/index.js”导入的模块“/home/me/projectHome/dist/schema/schema”
index.js 中的相对导入如下:
import express from 'express';
import { ApolloServer } from 'apollo-server-express';
import typeDefs from './schema/schema';
Run Code Online (Sandbox Code Playgroud)
我的 schema.ts 文件包含:
import { ApolloServer, gql } from 'apollo-server-express'
import { GraphQLScalarType } from 'graphql'
const typeDefs = gql`
...(edited for brevity/sanity)
`
export default typeDefs
Run Code Online (Sandbox Code Playgroud)
和我的打字稿文件(在这一点上应该很重要,因为它是失败的节点??)看起来像这样:
{
"compilerOptions": {
"target": "ES6",
"module": "ES6",
"lib": ["ES6"],
"allowJs": true,
"sourceMap": true,
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"skipLibCheck": true, …
Run Code Online (Sandbox Code Playgroud) 将C预处理器多次应用于同一代码库(具体来说,按顺序执行两次?)是否可以远程理解?
例如,具有如下声明:
##define DECLARE(FILE) # define DECLARATIONS \
# include FILE \
# undef DECLARATIONS
Run Code Online (Sandbox Code Playgroud)
你以前见过这样的成语吗?如果是这样,代码库是什么?你能链接吗?编译一个像这样的项目的项目会遵循什么样的模式?可以按原样使CPP执行此操作,还是需要编写元预处理器以在处理双哈希声明时"隐藏"单哈希声明,依此类推?
我正在尝试编写一个VimL片段,以允许用户使用热键切换不需要的尾随空格的高亮显示.(这是我有史以来的第一个Vim脚本,除了将东西复制粘贴到我的内容之外.vimrc
,所以...一粒盐:P)
我希望'我们目前正在追踪空白吗?' 是缓冲特定的状态; 但我在弄清楚自动命令如何与缓冲区交互时遇到了很多麻烦.
例如,这是我augroup
对缓冲区本地 autocmd
s的第一次尝试:
augroup ExtraWhitespace
au!
au BufEnter <buffer=abuf> match ExtraWhitespace /\s\+$/
au InsertEnter <buffer=abuf> match ExtraWhitespace /\s\+\%#\@<!$/
au InsertLeave <buffer=abuf> match ExtraWhiteSpace /\s\+$/
augroup END
Run Code Online (Sandbox Code Playgroud)
...不幸的是,这在调用时会立即绊倒:
Error detected while processing function ToggleExtraWhitespace:
line 19:
E680: <buffer=0>: invalid buffer number
line 20:
E680: <buffer=0>: invalid buffer number
line 21:
E680: <buffer=0>: invalid buffer number
No matching autocommands
Run Code Online (Sandbox Code Playgroud)
我不明白,为什么<abuf>
是0
,当bufnr('%')
为1 …
我已经google了很多,但我找不到有关如何在高级语言中实现可变长度字符串的信息.我正在创建自己的语言,并且不确定从字符串开始的位置.
我有一个描述string
类型的结构,然后是一个create
分配这样一个'字符串' 的函数:
/* A safer `strcpy()`, using `strncpy()` and `sizeof()` */
#define STRCPY(TO, FROM) \
strncpy(TO, FROM, sizeof(TO)); TO[sizeof(TO) - 1] = '\0'
struct string {
// …
char native[1024];
};
string String__create(char native[]) {
string this = malloc(sizeof(struct string));
// …
STRCPY(this->native, native);
return this;
}
Run Code Online (Sandbox Code Playgroud)
但是,这只允许1kb长的字符串.这有点愚蠢,在大多数情况下会浪费大量内存.
鉴于我必须以某种方式声明要使用的内存...我如何实现一个能够(有效地)存储(有效)无限数量的字符的字符串?
我thread
在解释器实现中有一个数据类型,用于我正在编写的编程语言.由于各种原因,需要获取当前 thread
(这本身就是一个指针:a struct thread*
)是一个相当常见的操作.
但是,请pthread_self(3)
给我一个pthread_t
,这是一个不透明的类型; 在某些系统上,它似乎是一个unsigned long
,但我听说我不能依赖于这种情况.我怀疑哈希表是这个唯一映射的正确实现(pthread_t
ID到struct thread
指针); 但是,我不知道怎么凑的pthread_t
可靠.
我希望得到任何有更多经验的人的建议,pthread(3)
或者,实际上,你必须"哈希"一个不透明的数据类型的任何情况.
c ×3
git ×2
node.js ×2
asynchronous ×1
autocmd ×1
c++ ×1
class ×1
constructor ×1
git-stash ×1
hashtable ×1
inheritance ×1
io ×1
javascript ×1
librt ×1
memory ×1
merge ×1
pipe ×1
posix ×1
pthreads ×1
repository ×1
scripting ×1
shell ×1
string ×1
terminal ×1
typescript ×1
vim ×1