2015-02-23 31 views
1

我一直在努力使我的工作负载能够尽可能无痛苦地上传我的FRC java代码给github。在这方面,我有此计划:试图自动化git,只提交名为“T”

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    printf("Adding files to commit.\n"); 
    system("git add *"); 

    _TCHAR* commit = argv[1]; 
    printf("Committing changes\n"); 
    char* buffer = new char[300]; 
    sprintf(buffer, "git commit -m '%s' *", commit); 
    system(buffer); 

    printf("Status:\n"); 
    system("git status"); 

    printf("Uploading...\n"); 
    system("git push origin master"); 

    printf("Done!"); 

    return 0; 
} 

问题是,当我传递参数“测试”,提交名为“‘T’”。我怎样才能解决这个问题?

+2

在'.git/hooks'目录中有git钩子,它们可以在提交之前或之后执行,你可以在那里添加'push'。编写仅调用shell命令的c程序并不是一个好主意,这就是shell脚本的用处。 – 2015-02-23 03:39:09

回答

0

我怀疑你建立你的程序作为一个Unicode的程序,因此所有TCHAR -typed变量都是Unicode。当您通过commitsprintf()时,没有对参数进行类型检查,因为它是可变参数参数的一部分。在一个Unicode字符串中,​​将有一个字节,其值为'T',后跟一个值为0的字节 - 结束字符串,直到涉及到sprintf()

我建议倾销TCHAR类型,并只使用char类型为这个简单的程序。如果你不想这样做,那么整个猪都可以使用基于TCHAR的函数,包括_tprintf()而不是混合TCHAR函数与普通的旧函数char函数。

+0

谢谢,我将代码中的所有_TCHAR *都改为char *,并且它工作正常。无论如何,你是FRC的一员吗? – 2015-02-23 03:57:39

+0

我不这么认为 - 我不知道FRC是什么。 – 2015-02-23 04:21:50