小编Gau*_*ier的帖子

在Windows和网络上设置,发布和备份git存储库

我在我的嵌入式项目中使用msysgit.本地存储库很棒,但我也想在我们的网络磁盘上安装存储库:

  • 它提供每日备份
  • 每个人都可以看到我的更改

我一直在努力通过以下方式获得两全其美:

  • 在我的本地磁盘上处理一个repo(更快的构建,总是最新的uncommited文件)
  • 经常提交(总是很好的细粒度)
  • 将本地存储库克隆到网络磁盘
  • 每隔一段时间从网络存储库中进行一次提取(在每次启动时,在批处理文件的帮助下,当我不重启时每次提交一次).

我非常想知道其他用户如何设置他们的msysgit回购,他们如何发布,如何备份,等等.

当然,我很感激有人告诉我,我做错了:)

git

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

Git将开发分支与master合并为生产版本

我正在使用Git进行代码版本控制.

我有一个开发分支,我正在做所有的脏开发.

每当我向世界发布一个生产版本时,我都希望将它放在我的主分支下.

问题是每当我合并开发和掌握时,master都会收到所有开发历史记录.

我想保持一切干净,所以分支看起来像这样:

发展

"init commit"

"发展"

"版本1.0"

"bug修复"

"bug修复"

"版本1.1"

"版本1.0"

"版本1.1"

可能吗?如果是的话,怎么样?

更新 我尝试使用Gauthier的答案,但它没有按我的意愿工作.

我采取的步骤如下:1.在master 2中创建一个init commit,切换到开发.3.几乎没有提交发展.4. checkout master 5. git merge development --no-ff

合并成功但是当我在我的存储库中查看高级别时,我看到在我的主分支中我有开发分支的所有历史记录,而我想只有init -----版本1.0.

这是它的外观屏幕截图:

开发部门: 在此输入图像描述

主分支: 在此输入图像描述

git git-merge

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

PIC16 C编译器

我正在寻找一个适用于PIC 16系列的优秀C编译器,适用于Windows.

  • 一些同事使用bknudc,但有些人似乎不喜欢它.显然你不能有效地使用链接器,事实证明最好是在包含文件中设置所有代码.

  • SDCC看起来不错,但看起来它仍处于测试阶段,并且不易设置或不得不处理.

  • 还有其他一些选择,根据他们自己的最佳选择.我找到了一些讨论这个主题的论坛,似乎没有人互相认同.MikroC,CCS(昂贵),HiTech,BoostC.

我希望得到一些关于什么是好的和什么是坏的真实信息.

如果我做对了,PIC16架构真的不是C友好的吗?是否有编译器让程序员在ANSI C中工作?还有一种设置足够好的调试器的方法吗?

compiler-construction embedded pic mikroc

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

emacs切换窗口到C-TAB和CS-TAB

我在这里看到了关于用C-x o和将光标从窗口移动到窗口的问题M-- C-x o.精细.

我想把它映射到C-TABC-S-TAB.

这是我添加到我的.emacs中的内容:

(global-set-key [C-tab] 'other-window)
(global-set-key [C-S-tab] '(other-window -1))
Run Code Online (Sandbox Code Playgroud)

C-tab有效,但不是C-S-tab.

迷你消息告诉我:

Wrong type argument: commandp, (other-window -1)
Run Code Online (Sandbox Code Playgroud)

我试过没有围绕其他窗口的括号,但这也行不通.

简而言之,我不确定如何将可选参数传递给我的.emacs中的函数.

请帮忙?

编辑添加版本:( Windows上的emacs 22.3.1)

emacs

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

使用操作系统语言安装 gnu make

我在我的 Windows 机器上安装了最新的 GNU make。

安装程序决定将语言设置为操作系统语言,但我没有收到提示。我希望它是英文的。我的操作系统是瑞典语。

我记得我在另一个 GNU 程序中遇到了类似的问题(不记得是哪个),这是通过添加环境变量“lang”和值“c”来解决的。

如何将 GNU make 的语言切换为英语?

mingw gnu-make

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

是否存在可以在不执行任何操作时使用的虚拟左值?

考虑以下C99功能:

void port_pin_set(const bool value, const uint8_t pin_mask)
{
    if (value) {
        PORT |= pin_mask;
    } else {
        PORT &= ~pin_mask;
    }
}
Run Code Online (Sandbox Code Playgroud)

PORTa define为例,例如:

#define PORT (P1OUT)
Run Code Online (Sandbox Code Playgroud)

有没有办法重新定义,PORT以便:

  • 它被接受为左值,
  • 该功能不做任何事情.

我想要做的是保持功能源不变,同时编译它不做任何事情.

编辑:我知道使用这样的左值可能不是最好的解决方案.我不是在寻找这个特定问题的最佳解决方案,我对语言本身很感兴趣.这是一个理论问题,而不是务实的问题.

c embedded language-lawyer

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

git使用emacs作为Windows下的编辑器进行提交

在Windows中使用git bash,我将我设置core.editor为以下内容:

 c:/program/emacs-24.2/bin/emacs --no-splash -geometry 110x58+200+2
Run Code Online (Sandbox Code Playgroud)

git commit,新的emacs框架按预期打开.打开的缓冲区有$@一个名称.我无法保存缓冲区并退出emacs.Git抱怨提交消息为空.

我有一个解决方法,即将我设置core.editor为:

c:/program/emacs-24.2/bin/emacs --no-splash -geometry 110x58+200+2 .git/COMMIT_EDITMSG
Run Code Online (Sandbox Code Playgroud)

这有效,但有一些缺点:

  • 我必须在包含.git文件夹的目录中.如果我在子目录中,它不起作用.
  • 打开的emacs框架有两个窗口,一个带有COMMIT_EDITMSG,一个带有$@.

有没有更好的方法来选择emacs作为提交编辑器(除了在终端中打开它)?

windows git emacs

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

包含一个头文件,用于使用Doxygen预处理器解析所有其他文件

我想#defineh文件中包含s 来解析Doxygen的所有其他文件.


项目背景:

我的C项目包含一个头文件config.h,它是build命令.

它还MODEL_A在同一构建命令上定义目标.

config.h根据目标创建定义正在建立(未定义的同一列表MODEL_A作为MODEL_B):

#if defined(MODEL_A)
#define HAS_FUNCTIONALITY_1
#define HAS_FUNCTIONALITY_2
#elif defined(MODEL_B)
#define HAS_FUNCTIONALITY_3
#define HAS_FUNCTIONALITY_4
#endif 
Run Code Online (Sandbox Code Playgroud)

我对Doxygen的问题:

我尝试使用Doxygen生成文档.我在Doxyfile中:

# including of config.h to INPUT seems necessary.
INPUT = ./source/config.h \
    ./source
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
INCLUDE_PATH = ./source
INCLUDE_FILE_PATTERNS = ./source/config.h
PREDEFINED = MODEL_A
Run Code Online (Sandbox Code Playgroud)

依赖于定义的代码HAS_FUNCTIONALITY_x未包含在文档中,就好像预处理器没有获得定义一样config.h.


到目前为止我的发现:

我在帮助下检查了预处理器输出doxygen -d Preprocessor,并且可以看到:

  • ./source/config.h首先解析,并正确根据MODEL_A(我可以 …

c doxygen header-files c-preprocessor

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

C++向量复制赋值,调用其元素的哪种复制机制?

我的课A显式实现了它的复制构造函数和复制赋值。

当复制分配此类元素的向量时,使用哪种复制机制?

这是:

vector<A> a1, a2(5);
a1 = a2;
Run Code Online (Sandbox Code Playgroud)

是否要对A的所有新元素使用 的复制构造函数a1,并将 的元素a2作为输入?

a1或者它会为元素腾出空间,然后使用A'operator=和 的 元素a2作为输入?

a1如果赋值前不为空怎么办?

还指定了吗?

我的类的复制构造函数并operator=没有完全执行相同的操作(这是不好的做法吗?到目前为止主要是测试内容)。看起来复制构造函数被调用了,但我想知道是否一定会这样,或者在这种情况下是否恰好如此。

c++ vector copy-constructor copy-assignment

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

为什么我的ack正则表达式会产生额外的意外结果?

我终于学习了regexps和ack训练.我相信这使用Perl regexp.

我想匹配第一个非空白字符所在的所有行,if (<word> !并且元素之间有任意数量的空格.

这就是我想出的:

^[ \t]*if *\(\w+ *!
Run Code Online (Sandbox Code Playgroud)

它几乎起作用了.^[ \t]*是错误的,因为它匹配一个或没有[空格或制表符].我想要的是匹配任何可能只包含空格或制表符(或什么都没有)的东西.

例如,这些不匹配:

// if (asdf != 0)
else if (asdf != 1)
Run Code Online (Sandbox Code Playgroud)

我该如何修改我的正则表达式呢?


编辑添加命令行

ack -i --group -a '^\s*if *\(\w+ *!' c:/work/proj/proj 
Run Code Online (Sandbox Code Playgroud)

注意单引号,我对它们不再那么肯定了.

我的搜索库是一个更大的代码库.它确实包括匹配表达式(非常一些),但即使例如:

274:                }else if (y != 0) 
Run Code Online (Sandbox Code Playgroud)

,由于上面的命令,我得到了.


编辑添加了mobrule的测试结果

Mobrule,谢谢你给我提供了一个测试文本.我会在这里复制我的提示:

C:\Temp\regex>more ack.test
# ack.test
if (asdf != 0)    # no spaces - ok
 if (asdf != 0)   # single space - ok
    if (asdf != 0) # single …
Run Code Online (Sandbox Code Playgroud)

regex perl ack

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