标签: git

如何克隆和集成外部(从git)cmake项目到本地项目

当我尝试使用Google Test时,我遇到了一个问题.

有很多关于如何使用ExternalProject_Addgtest添加到项目中的手册,但是大多数这些手册描述了一种基于使用gtest下载zip存档并构建它的方法.

我们知道gtest是github托管和基于cmake的项目.所以我想找到原生的cmake方式.

如果这是一个仅限标题的项目,我会写一些类似于:

cmake_minimum_required(VERSION 2.8.8)
include(ExternalProject)
find_package(Git REQUIRED)

ExternalProject_Add(
    gtest
    PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/ext
    GIT_REPOSITORY https://github.com/google/googletest.git
    TIMEOUT 10
    UPDATE_COMMAND ${GIT_EXECUTABLE} pull
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
    LOG_DOWNLOAD ON
)

ExternalProject_Get_Property(gtest source_dir)
set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include CACHE INTERNAL "Path to include folder for GTest")
set(GTEST_ROOT_DIR ${source_dir}/googletest CACHE INTERNAL "Path to source folder for GTest")
include_directories(${INCLUDE_DIRECTORIES} ${GTEST_INCLUDE_DIR} ${GTEST_ROOT_DIR})
message(${GTEST_INCLUDE_DIR})
Run Code Online (Sandbox Code Playgroud)

并从我的cmake项目添加此脚本,如:

 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/")
 include(AddGTest)
....
 add_dependencies(${PROJECT_NAME} gtest)
Run Code Online (Sandbox Code Playgroud)

但是,这需要构建步骤.

该如何实施?

  1. 通过添加BUILD_COMMANDExternaProject_Add,并与生产库链接?
  2. 或者通过将gtest的cmakelists包含到我的项目中,如下所示:

add_subdirectory (${CMAKE_SOURCE_DIR}\ext\src\gtest\googletest\CMakeLists.txt)

这是不正确的方法,因为在项目加载的那一刻文件夹不存在.

  1. 还有其他方法吗?

什么是正确/偏好的方式?

c++ git cmake googletest

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

如何在SmartGit/Git中撤消提交操作

想在智能git中撤消提交操作.无意中提交了错误的代码,现在无法恢复该代码.

提前致谢.

git smartgit

11
推荐指数
1
解决办法
9814
查看次数

Git:从Pull Request中删除文件

我错误地将现有文件的本地更改添加到了我的PR中.我想仅还原此文件而不在本地删除此文件.我只是希望它不会出现在Pull Request中.我不想创建新的分支,因为很多人对此PR中的其他文件进行了评论.

git github

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

正确配置Jenkins GitHub Pull Request Builder下游

我正在尝试创建两个Jenkins作业,它们都利用GitHub Pull Request Builder插件来运行多个状态检查,但是我无法从我的下游作业中获取状态检查以显示在我的GitHub项目中.

以下是我想要设置的总结CI流程:

  1. 针对我的git存储库打开了一个pull请求,该请求触发了在Jenkins中运行的Upstream作业
  2. 上游基于构建报告其状态,如果SUCCESS应该通过构建后操作调用下游作业
  3. 下游运行并报告自己的状态检查

第3步是我遇到问题的地方.下游正常运行,但它没有发布状态.在我的GitHub项目设置的分支部分下,状态甚至不可用.我不确定GHPRB如何初始创建状态检查,但是在控制台输出中有对上下文消息的引用:

14:58:23 Started by upstream project "upstream" build number 209
14:58:23 originally caused by:
14:58:23  GitHub pull request #114 of commit f1ff2819a5308f7819275e732cf44a2cc2ec31dc, no merge conflicts.
14:58:23 [EnvInject] - Loading node environment variables.
14:58:23 Building on master in workspace /store/jenkins/jobs/downstream/workspace
14:58:23  > git rev-parse --is-inside-work-tree # timeout=10
14:58:23 Fetching changes from the remote Git repository
14:58:23  > …
Run Code Online (Sandbox Code Playgroud)

git github jenkins ghprb

11
推荐指数
1
解决办法
6219
查看次数

如何在Eclipse Neon中轻松实现Git提交

我刚从火星升级到Eclipse Neon.之前我可以从"团队"菜单中选择"提交",对话框将为我想要播放的文件提供复选框.我可以轻松点击"全选",所有文件都会上演.事实上,如果我没记错的话,已经在存储库中的文件已经被检查过了.

现在Eclipse Neon没有弹出对话框,但显示了"Git Staging"视图选项卡.修改后的文件列为"未分级更改".是的,我熟悉Git工作流程,但这似乎是Eclipse UI的倒退.我如何"暂存"文件?我是否必须选择它们并将它们拖放到"分阶段更改"?我是否必须右键单击它们并将它们添加到索引中?

无论发生什么,它都不会让我只是点击"提交"按钮---它会抱怨没有未分级的文件.我是否错过了一些提交方法,就像在Eclipse Mars中一样简单,自动暂存文件或至少是"全部显示"按钮?

java eclipse git

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

更改特定提交的提交消息

注:类似的问题,因为这一个,但也有一些重要的变化.

在给定提交ID的情况下,我有以下函数来重写提交的日期:

rewrite-commit-date () {
    local commit="$1"
    local newdate="$2"
    newdate="$(date -R --date "$newdate")"
    echo ">>>> Rewriting commit $commit date: $newdate"
    git filter-branch --env-filter \
        "if test \$GIT_COMMIT = '$commit'
         then
             export GIT_AUTHOR_DATE
             export GIT_COMMITTER_DATE
             GIT_AUTHOR_DATE='$newdate'
             GIT_COMMITTER_DATE='$newdate'
         fi" &&
    rm -fr "$(git rev-parse --git-dir)/refs/original/"
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试实现类似的功能rewrite-commit-message来更改提交消息.我想要的是:

  1. 该函数rewrite-commit-message接受两个参数:和commit_id,和new_commit_message
  2. 没有必要知道旧的提交消息:commit_id知道哪个提交更改
  3. git commit --amend,因为这与旧提交有关(不一定与最近的提交有关)
  4. 不用担心重写历史和主回购:我在一个功能分支工作,我被允许这样做 git push -f
  5. 我想用filter-branch它,但我不知道如何:
    • 将更改应用于特定的承诺:将test在所使用的rewrite-commit-date功能是用来在env-filter,但我不会做env-filter在这里,因为我不希望改变有关提交环境中任何事物,但提交信息.
    • 如何强制提交消息?在 …

git git-amend git-commit git-rewrite-history

11
推荐指数
1
解决办法
3870
查看次数

更改git bash的根目录(/)

有没有办法在Windows上更改git bash的根目录(/).

默认情况下,它设置为安装文件夹.将其设置为c:\而不是需要在所有绝对路径上键入驱动器号,例如/ c/some/path.

windows git bash msys2

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

将GIT LOG导出到Excel文件中

我已经调查了论坛,但没有运气.

要求:

运行GIT LOG(格式)命令并将结果写入Excel文件.

我见过一些例子,其中使用GIT Log命令,数据可以写入CSV,但格式化是两倍的努力.

任何实用程序或方法都会有所帮助.

谢谢米琳德

git logging

11
推荐指数
2
解决办法
8023
查看次数

如何让Visual Studio在git下显示合并冲突?

我正在使用Visual Studio 2015 Pro并使用Gi​​t repo.假设我做了拉动或应用隐藏的更改或做了一些导致我的分支发生冲突的事情.例如,在这种情况下,我只是应用了一个存储:

在此输入图像描述

正如您所看到的,我有一些更改,但Web.config存在冲突.为什么始终存在冲突的XML文件?

现在,我进入Visual Studio并转到Team Explorer-> Changes:

在此输入图像描述

在这里,我看到我的暂存的变更,但也有零个不分级的变化.我想知道为什么Web.config没有显示在这里,所以我可以解决冲突.

两件事情:

  1. 相信如果我使用Visual Studio 进行Pull,它会检测到然后运行合并工具的冲突.我还没有尝试过这个,但我知道它对TFS有用.但是,我想知道我是否可以从命令行使用git pull然后使用Visual Studio来解决冲突.
  2. git config --global merge.tool已经vsdiffmerge所以如果我是运行git mergetool在命令行,那就使用Visual Studio合并.但是,这样做会产生一个全新的Visual Studio实例,这个实例很慢而且很烦人,并且不允许我在项目的其余部分工作.

有人对这个有任何见解吗?谢谢!

git visual-studio visual-studio-2015

11
推荐指数
1
解决办法
3584
查看次数

git-stash更改而不还原

我使用Git处理一个项目.每隔一段时间我发现自己想要保存我的更改,而不是提交它们,只是作为备份,然后继续工作.我通常做的是git stash然后立即git stash apply将代码恢复到与存储之前相同的状态.我遇到的问题是git stash会恢复我的工作目录,所以即使我立即应用存储文件和项目也必须重建,因为它们似乎已经改变了.这非常令人讨厌,因为我们的一些项目需要很长时间才能构建.

所以我的问题是,有没有办法存储我的更改而不还原?如果stash不这样做,git中是否还有其他命令可以执行此操作?谢谢.

git git-stash

11
推荐指数
2
解决办法
2194
查看次数