我在我的嵌入式项目中使用msysgit.本地存储库很棒,但我也想在我们的网络磁盘上安装存储库:
我一直在努力通过以下方式获得两全其美:
我非常想知道其他用户如何设置他们的msysgit回购,他们如何发布,如何备份,等等.
当然,我很感激有人告诉我,我做错了:)
我正在使用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.
这是它的外观屏幕截图:
开发部门:
主分支:

我正在寻找一个适用于PIC 16系列的优秀C编译器,适用于Windows.
一些同事使用bknudc,但有些人似乎不喜欢它.显然你不能有效地使用链接器,事实证明最好是在包含文件中设置所有代码.
SDCC看起来不错,但看起来它仍处于测试阶段,并且不易设置或不得不处理.
还有其他一些选择,根据他们自己的最佳选择.我找到了一些讨论这个主题的论坛,似乎没有人互相认同.MikroC,CCS(昂贵),HiTech,BoostC.
我希望得到一些关于什么是好的和什么是坏的真实信息.
如果我做对了,PIC16架构真的不是C友好的吗?是否有编译器让程序员在ANSI C中工作?还有一种设置足够好的调试器的方法吗?
我在这里看到了关于用C-x o和将光标从窗口移动到窗口的问题M-- C-x o.精细.
我想把它映射到C-TAB和C-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)
我在我的 Windows 机器上安装了最新的 GNU make。
安装程序决定将语言设置为操作系统语言,但我没有收到提示。我希望它是英文的。我的操作系统是瑞典语。
我记得我在另一个 GNU 程序中遇到了类似的问题(不记得是哪个),这是通过添加环境变量“lang”和值“c”来解决的。
如何将 GNU make 的语言切换为英语?
考虑以下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以便:
我想要做的是保持功能源不变,同时编译它不做任何事情.
编辑:我知道使用这样的左值可能不是最好的解决方案.我不是在寻找这个特定问题的最佳解决方案,我对语言本身很感兴趣.这是一个理论问题,而不是务实的问题.
在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)
这有效,但有一些缺点:
COMMIT_EDITMSG,一个带有$@.有没有更好的方法来选择emacs作为提交编辑器(除了在终端中打开它)?
我想#define从h文件中包含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(我可以 …我的课A显式实现了它的复制构造函数和复制赋值。
当复制分配此类元素的向量时,使用哪种复制机制?
这是:
vector<A> a1, a2(5);
a1 = a2;
Run Code Online (Sandbox Code Playgroud)
是否要对A的所有新元素使用 的复制构造函数a1,并将 的元素a2作为输入?
a1或者它会为元素腾出空间,然后使用A'operator=和 的 元素a2作为输入?
a1如果赋值前不为空怎么办?
还指定了吗?
我的类的复制构造函数并operator=没有完全执行相同的操作(这是不好的做法吗?到目前为止主要是测试内容)。看起来复制构造函数被调用了,但我想知道是否一定会这样,或者在这种情况下是否恰好如此。
我终于学习了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)