在最后两个标签 git 之间导出文件
Posted
技术标签:
【中文标题】在最后两个标签 git 之间导出文件【英文标题】:Export files between two last tag git 【发布时间】:2021-07-29 06:33:43 【问题描述】:我的 ASP.NET MVC Web 应用使用 C# 编写并使用 SQL Server 存储过程。
我使用Git进行代码源控制,每次部署时都会创建一个标签来定义部署的版本。
例如:tag1_2021_07_29_11_00
,tag2_2021_07_30_09_01
...标签是我部署的时间,这次部署可以随机。
我需要运行的存储过程是两个标签之间的列表文件:tag2_2021_07_30_09_01
和tag1_2021_07_29_11_00
。
(例如sp1.sql
、sp2.sql
、sp3.sql
我将在 SQL Server Management Studio 中运行)
我想用 cmd 自动部署以节省时间。
我成功创建了用于构建和导出部署 Web 源代码的 cmd 命令,但我不知道将tag1
和tag2
之间的.sql
文件导出到一个文件夹中的命令。
请注意,当我显示 git log
并选择我的列表 SQL 存储过程文件 sp1.sql
,sp2.sql
...时,我看到 TortoiseGit 有一个函数“export this version..
”...
谁能帮我实现使用 cmd 导出列表存储的目标?
这是我的 cmd 构建命令,我需要一些 cmd 行来导出列表 SQL 以使用我的源压缩(到 deploy_PROD_%datetime%.7z
):
@echo off
for /f %%a in ('powershell -Command "Get-Date -format yyyy.MM.dd__HH.mm"') do set datetime=%%a
del /s /q "D:\botdeploy\*"
cd /D D:\Source & git checkout PROD & git pull & git tag PROD_deploy_%datetime% & git push --tags
cd /D "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Msbuild" D:\Source\CRM.csproj /t:Restore,Rebuild /p:outdir="D:\botdeploy\\" /p:Configuration=Release & del /q "D:\botdeploy\_PublishedWebsites\CRM\Web.config" & "C:\Program Files\7-Zip\7z" a -t7z C:\Users\Nam\Desktop\deploy_PROD_%datetime%.7z D:\botdeploy\_PublishedWebsites\CRM\*
pause
【问题讨论】:
你能分享一下你已经拥有的吗?这可能会有所帮助... 【参考方案1】:如果您要列出两个标签之间添加/修改(但未删除)的文件,请参阅in here
git diff --name-only --relative --diff-filter=AM tag1 tag2 > list
获得文件列表后,您可以在专用的克隆存储库中使用它,can sparse checkout 仅使用您想要的文件(git sparse-checkout
):
git clone --filter=blob:none --no-checkout --branch tag2 /url/remote/repo
cd repo
git sparse-checkout init
# for each file in list
git sparse-checkout add <aFile>
git read-tree -mu HEAD
最后,您可以git archive
该存储库,以便获得仅包含您想要的文件的存档,并且版本正确(tag2
,最新版本)
【讨论】:
@LeGEC 确实没有。已删除。以上是关于在最后两个标签 git 之间导出文件的主要内容,如果未能解决你的问题,请参考以下文章
如何根据标签的属性名称选择两个标签之间的 xml 文件中的所有节点?
使用 csv 文件中的所有信息生成在两个标签之间合并的所有合并请求的列表
从两个唯一标签或评论之间的文件中提取内容并将其放入具有相同标签或评论的其他文件中?