首页 > 其他分享 >git切分支引起的重编译问题

git切分支引起的重编译问题

时间:2024-01-21 09:11:07浏览次数:29  
标签:restore git 修改 编译 fun 分支

实际使用git管理一个大型项目时,如llvm,当仅修改极少量的代码,切换分支后会引起很多代码的重新构建。特别是切换到老的分支上,老的build目录里应该不需要重新编译才对。由此引发一个问题:git checkout 切换分支之后,源码的日期会变化吗?

假如A,B分支中都有源文件fun.c, A中比B中新,当前在A分支,checkout到B分支,fun.c的修改日期会变成B分支中最后修改日期吗?

答案是,因为fun.c的在两个分支上不同,切B后会重写编译环境中的该文件,导致fun.c的修改时间为当前最新时间,这一般会比A,B分支的最后修改时间都新,从而切分支的过程会引起构建的叶子节点变化感知,触发一系列重新构建操作。而我们预期的应该是且分支之后,文件的修改时间变成最终提交时间。

git-restore-mtime是一个切分支后恢复文件时间为分支上最后修改时间的第三方工具。在ubuntu下安装和使用方法如下

sudo apt-get install git-restore-mtime
git restore-mtime

标签:restore,git,修改,编译,fun,分支
From: https://www.cnblogs.com/zwlwf/p/17977512

相关文章

  • 将 .NET 8应用 以 dotnet publish 创建容器镜像并结合 Github Actions 部署到 Azure
    介绍.NET8无需DockerFile即可为.NET应用创建docker映像的新方法,我将使用dotnetpublish将.NET应用容器化,在本文中,我将分享我如何为.NET8的项目创建一个简单的ci/cd的经验。它包括2个主题:创建用于生成.NET应用并将其发布到Azure的GitHub工作流如何使用do......
  • git上传代码指令,拿来即用
    进入到所要上传的项目中打开git输入如下指令即可上传成功,地址换成你们的就行,由于git仓库勾选了README.md但是本地仓库没有所以需要下拉远程仓库并且合并操作,感谢wayup的文章gitinitgitadd.gitcommit-m“firstcommit”gitbranch-Mmaingitremoteaddoriginhttps://......
  • 编译安装Redis
    编译安装Redisubuntu22.04.31.下载redis源码包redis官网下载最新的稳定版本。(7.2)2.编译安装将redis.tar.gz解压到linxu下的/usr/local/src下,用make命令编译。需要一下依赖pkg-configgcc如果报错缺失cc和pkg-config,则需要安装对应的依赖sudoapt-getinst......
  • Ubuntu20.04静态编译Boost记录
    下载Boost源码地址:https://www.boost.org/users/history/version_1_72_0.html指定安装位置./bootstrap.sh--prefix=/usr/local/boost-1-72-0编译release版本的boost库./b2toolset=gcclink=staticruntime-link=staticthreading=multi开始编译sudo./b2install--......
  • C++编译全过程
    1.源文件.cpp2.预处理:将所有的#include头文件以及宏定义替换成其真正的内容(删除所有的注释、宏扩展、文件包含).i3.汇编:转换为汇编语言.s4.编译:转换为二进制机器码.o(目标文件)5.链接:链接过程将多个目标文件以及所需的库文件(.so等)链接成最终的可执行文件(executablefile)......
  • 第九天:软件编译安装过程
    一、利用编译工具,通常只需要三个大的步骤./configure(1)通过选项传递参数,指定安装路径、启用特性等;执行时会参考用户的指定以及Makefile.in文件生成Makefile(2)检查依赖到的外部环境,如依赖的软件包make根据Makefile文件,会检测依赖的环境,进行构建应用程序makeinstall复......
  • Mac安装Git
    官网https://git-scm.com/download/macbrew安装gitbrewinstallgit配置git设置Git用户名和电子邮件:#设置你的用户名gitconfig--globaluser.name"你的用户名"#设置你的电子邮件地址gitconfig--globaluser.email"你的电子邮件地址"#检查配置gitconfig--lis......
  • VC 编译crt不同版本,Debug/Release混用问题
    extern"C" int__CRTDECL_imp__swprintf( _Pre_notnull__Post_z_wchar_t*const_Buffer, _In_size_tconst_BufferCount, _In_z__Printf_format_string_wchar_tconst*const_Format, ...){ int_Re......
  • node-sass 安装出错 Cannot download "https://github.com/sass/node-sass...
    Downloadingbinaryfromhttps://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-83_binding.nodeCannotdownload"https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-83_binding.node": github网站大多时候都访问不到,下载 win32-x......
  • OpenWrt在WSL编译报错
    OpenWrt在WSL编译报错执行以下指令时:./scripts/feedsupdate-a具体报错如下:Builddependency:OpenWrtcanonlybebuiltonacase-sensitivefilesystemPrerequisitecheckfailed.UseFORCE=1tooverride.make:***[/mnt/d/openwrt/include/toplevel.mk:182:/mnt......