
目录一、安装安装服务器P4D安装客户端P4V二、操作服务器P4D1. 部署客户端P4V1. 配置(一次)2. 新建stream3. 获取最新代码4. 签出并修改5. 将比较工具改为LVCampare(可选)6. 添加/删除文件7. 重命名/移动8. 撤销改动三、报错四、笔记五、问答离线后怎样提交workspace和depot的区别是什么我的labview项目打开然后要保存的时候就所有文件都要提示是否要保存这样的话岂不是所有都要签出六、使用规范一、安装安装服务器P4D下载地址https://link.wtturl.cn/?targethttps%3A%2F%2Fwww.perforce.com%2Fdownloads%2Fhelix-core-p4dsceneimaid497858langzh下载p4-server-installer-x64.exe默认→Next修改P4ROOT一般放在Perforce路径下面的手动新建的一个子文件夹这里是P4D→NextNextExit完成命令行查看是否服务是否正常部署安装客户端P4Vhttps://link.wtturl.cn/?targethttps%3A%2F%2Fwww.perforce.com%2Fdownloads%2Fhelix-visual-client-p4vsceneimaid497858langzh下载p4vinst64-uiclient.exe默认→NextNextInstall二、操作视频教学https://www.bilibili.com/video/BV11S4y147kT/?spm_id_from333.337.search-card.all.click服务器P4D1. 部署下载完就已经部署可以用p4 info命令行来判断是否服务正常启动客户端P4V1. 配置(一次)winS→搜P4V→打开P4V新建用户New→输入以下所有信息User nameTestFull nameTestPassword123456Email随便新建工作区点击Workspace→Browse→把工作区设置为E:\Perforce点击确认后就会显示一个自定义的名称Test_cc_9046→点击OK配置完成▲工作区是属于本地的所以要绑定host每台电脑都要有自己独立的工作区如果不存在自己的工作去就点New来创建如果存在就点Browse浏览现存的不能使用别个电脑的工作区。2. 新建streamFile→New→Stream输入Stream名称TestPerforce点击Populate生成点击Browse→选中要版本管理的代码文件夹(lvproj所在文件夹)→点击选择文件夹在这里就会显示对应文件夹名称并且下方会显示文件夹有多大有多少个文件→Nextstart等待完成→P4V会直接退出可能是因为文件太多重新打开选择刚才创建的Test账户选择刚才创建的工作区选中标准程序2026年3月27日→点击Submit点击submit作为第一次部署→然后depot就会有对应的文件完成上面步骤后Depot选项卡下就会有TestPerforce里面就会有最新的代码Workspace和DepotWorkspace是本地的实际代码depot是部署在服务器的代码Depot服务器端存储项目的所有文件、所有历史版本记录谁在什么时候签出了什么、提交了什么管理文件锁、分支、标签等元数据你永远不直接编辑 Depot 里的文件Workspace本地Depot 中部分或全部文件的本地副本你实际打开 LabVIEW 编辑、编译、测试的地方包含一个隐藏的 p4config / .p4root 配置告诉 P4V “这个文件夹对应 Depot 的哪个路径”可以有多个比如一个用于主线开发一个用于紧急修复▲一个项目可以有多个stream但是实际使用的一般是mainline。一个stream可以对应有多个工作区工作区是本地/机台的stream是属于服务器的。3. 获取最新代码上面的步骤最好是在服务器上或者主控电脑执行下面的步骤是另外一台电脑要修改代码的情况下执行正常打开P4V→修改为对应的IP地址和端口→选中用户→选中工作区新建工作区→工作区根目录可以默认→选中部署在服务器的stream这里选择上文配置好的TestPerforce选中TestPerforce→点击上面工具栏的Get Latest→就会把代码下载到第2步指定的工作区路径当中完成上一步后Workspace就会有最新的代码4. 签出并修改选中文件夹或者文件→点击Checkout(签出)→点击OK在P4V中双击或者右键打开文件(不直接在window文件浏览器打开)修改并提交在main1.vi增加一个布尔控件→点击Submit→点击弹窗的submit就能完成提交5. 将比较工具改为LVCampare(可选)Edit→Preferences→修改为下图设置6. 添加/删除文件右键在工作区→mark to add/mark to delete→submit就会把工作区的代码提交到流仓库7. 重命名/移动右键在工作区→rename/move→submit就会把工作区的代码提交到流仓库8. 撤销改动签出后如果不想改动了可以在pending选项卡右键撤销如果全量签出了或者签出了没改动的文件可以选项撤销没改动的文件▲撤销后的文件会直接回到原来(修改的会撤销掉)的状态并且文件也会回到未签出的状态三、报错安装失败现象安装P4服务器弹窗报Setuphas detected that this machine is already configured for distributed version contrl,so P4 Server(P4D) can not be installed.原因检测到有DVCS 是 Distributed Version Control System分布式版本控制系统路径是C:\Program Files\Perforce\DVCS解决重命名这个文件夹错选工作区现象选择host后会报不是本地绑定的hostClient ‘CZBYD_think_auto_1929’ can only be used from host ‘think’.原因在P4V客户端中是可以看到別的电脑的工作区如果选择了别的电脑的工作区就会报host的问题解决应该新建独属于自己电脑的工作区。四、笔记Labview的比较工具路径C:\Program Files\National Instruments\Shared\LabVIEW CompareP4 info可以查服务器是否运行C:\Users\Administratorp4 info User name: Administrator Client name: cc Client host: cc Client unknown. Current directory: c:\Users\Administrator Peer address:127.0.0.1:52349 Client address:127.0.0.1 Server address: www.reflector.net:1666 Server root: D:\PerforceServer\Server date:2026/07/3110:15:33 0800 Server uptime:46:54:04 Server version: P4D/NTX64/2025.2/2907753(2026/03/09)Server license: none Case Handling: insensitive如果是某台电脑上传代码到服务器的话那么这两个路径是一样的在streamsdepot→show in explorer会显示文件路径在workspace→show in explorer也是显示同样的路径新增文件会弹出这个点击是就行如果不签出就修改会有弹窗所以一定要点签出才能修改和保存什么时候需要解决冲突(Resolve)在 P4V 中查看文件状态图标 蓝色对勾 / 无标记: 本地与服务器一致 → Get Latest 安全 黄色铅笔: 已修改但服务器没有更新 → 无需 Resolve 红色感叹号 / 星号: 已修改 且 服务器有更新 → ⚠️ 必须 Resolve 绿色向下箭头: 没修改但服务器有更新 → Get Latest 即可场景本地状态服务器状态操作是否需要 Resolve仅落后未修改干净有新版本Get Latest❌ 不需要直接覆盖/更新本地文件真正冲突已修改且未提交也有新版本Get Latest/Sync✅ 需要必须 Resolve 后才能提交仅本地改动已修改且未提交无变化-❌ 不需要你的修改是安全的LabVIEW 项目的特殊注意事项由于 LabVIEW VI 是二进制排他锁l理论上不应该出现真正的合并冲突。如果遇到了说明有人绕过了锁机制: 比如强制签出、或文件类型配置错误在离线状态下编辑了已被他人修改的文件: 断网期间无法获取锁重新联网后 Sync 时发现服务器版本已变此时的 Resolve 不是文本合并二进制无法合并而是三选一Accept Theirs: 放弃你的修改采用服务器版本你的工作丢失Accept Yours: 保留你的修改覆盖服务器版本可能覆盖别人的有效工作Merge Manually: 实际上就是打开两个版本的 VI手动把需要的改动重新做一遍⚠️ 这就是为什么 LabVIEW 项目强调先 Get Latest 再编辑和及时提交。避免二进制 Resolve 的最好办法就是不让它发生。不同的项目放在不同的流仓库一个流仓库对应一个工作区如果修改过后点击diff可以对比流仓库和工作区的有哪里不一样如果是一样的会弹窗identical→两个文件完全一样直接替换同名文件不需要提前操作只需要直接复制到对应路径替换选中工作区的文件后→点击Revert→确定本地文件内容就会恢复为签出时的服务器版本点击获取最新会文件状态Sync 行为你的本地修改你已签出服务器无更新跳过该文件✅ 安全保留你已签出服务器有更新标记为冲突 (Resolve Needed)⚠️ 需要手动解决你未签出服务器有更新正常更新到最新版N/A新增文件正常拉取到工作区N/A选择工作区要注意要确认是自己的工作区如果有没有自己的工作区创建一个在labview想修改vi的时候在这里可以输入对应路径从而签出来修改提交时候报Merges still pending – use ‘resolve’ to merge files.Submit failed – fix problems above then use ‘p4 submit -c 16’.则需要解决冲突Actions→Resolving如果存在Resolving的数据则需要解决冲突可以先自动解决如果不能自动解决则只能选择Target(本地)或者source(仓库)。打开LabVIEW库不包含新增的类文件文件夹中存在新增的类文件在库里添加了类的情况下在库的文本会有记录在P4V的工作区文件夹中有文件如果P4v中存在文件但是打开项目发现对应的库没有新增的类的话要重新提交库如果需要同一个vi文件不能同时被两个电脑签出可以右键文件→Change FileType→修改为图片是Project的文本可以看出只管控到里面包含的库和独立的vi更下面是生成程序规范可以看出如果修改库中的代码是不会影响Project的文本内容的。文件图标的含义可以悬停在对应文件上看左上角红色勾代表本机把这个文件已经签出并且在changelist里面右上角蓝色勾代表本机存在其他电脑同时在签出。右下角的绿点代表本地工作区和仓库已经同步在提交之前在工作区右键→点击Reconcile offline work…就会把所有新增的文件全部mark to add这个时候提交就不会遗漏文件没有添加到仓库了只能有五个用户五、问答离线后怎样提交Q如果不连服务器的情况下直接修改了本地的代码怎么办到时候如果连上服务器了直接提交吗A千万不要直接提交在 Perforce 中离线修改后直接点击 Submit 是最高危的操作之一。虽然 P4V 可能允许你这么做取决于配置但这极易导致覆盖他人代码或丢失自己的修改。请严格按照以下安全着陆流程操作 为什么不能直接提交你没有锁: 离线时无法获取排他锁别人可能在你断网期间已经修改并提交了同一个文件。版本已过期: 你的本地基础版本是旧的服务器上的 HEAD 版本可能已经变了。Perforce 不知道你在编辑: 离线修改不会在服务器上创建 Pending Changelist服务器认为该文件无人占用。⚠️ 核心风险: 直接 Submit 用你的旧版本 离线改动 强制覆盖 服务器上可能已有的新改动。这在 LabVIEW 二进制项目中意味着别人的工作被无声抹除。连接服务器↓Get Latest / Sync⚠️ 关键步骤不要跳过↓┌──────────────────────────────┐│ 系统检测到本地有未跟踪的修改 ││ 弹出 Resolve 对话框 │└──────────────────────────────┘↓选择 Resolve 策略见下方说明↓验证功能正常↓正式签出 → Submit 第3步详解Resolve 时选什么由于 LabVIEW VI 是二进制文件无法自动合并你必须手动决策选项含义何时使用Accept Yours保留你的离线修改丢弃服务器新版本✅ 确认服务器上的改动无关紧要或你是唯一作者Accept Theirs放弃你的离线修改采用服务器版本✅ 你的改动已过时/错误或别人的修改优先级更高Merge Manually打开两个版本的 VI手动重新整合✅ 双方改动都需要保留最常见于协作场景️ 如何避免下次再陷入这种困境预签出: 如果预知要离线工作提前在联网时签出所有可能要改的文件。这样即使离线编辑上线后 Perforce 也知道这些文件被你锁定Sync 时会明确提示冲突而非静默覆盖。使用 p4 reconcile: 上线后、Get Latest 之前先运行此命令。它会扫描本地文件系统自动将离线修改标记为 Pending Change让 Perforce 承认你的离线工作后续 Resolve 流程更可控。如何避免下次再陷入这种困境1预签出: 如果预知要离线工作提前在联网时签出所有可能要改的文件。这样即使离线编辑上线后 Perforce 也知道这些文件被你锁定Sync 时会明确提示冲突而非静默覆盖。2使用 p4 reconcile: 上线后、Get Latest 之前先运行此命令。它会扫描本地文件系统自动将离线修改标记为 Pending Change让 Perforce 承认你的离线工作后续 Resolve 流程更可控。3养成习惯: 离线工作结束后第一件事永远是 Sync Resolve而不是 Submit。把提交当作最后一步而非第一步。一句话总结离线修改 ≠ 可以直接提交。必须先 Sync 触发 Resolve手动确认你的离线改动与服务器最新状态兼容后才能安全提交。对于 LabVIEW 项目这一步是保护团队成果的最后一道防线永远不要省略。workspace和depot的区别是什么Qworkspace和depot分别用来干什么的为什么要两边搞A这是理解 Perforce以及所有集中式版本控制最核心的概念。简单来说Depot 公司的中央档案库服务器端唯一真相源Workspace 你个人的办公桌本地电脑工作副本两边搞不是为了麻烦而是为了安全、协作和效率。下面用通俗类比技术解释帮你彻底理清通俗类比图书馆 vs 你的书桌概念类比说明Depot图书馆藏书室所有书籍的唯一正本任何人不能直接涂改只能借阅/归还Workspace你的书桌从图书馆借来的副本你可以在上面做笔记、修改但只有还回去Submit才影响正本Get Latest去图书馆拿最新版把别人更新过的内容同步到你的书桌Submit把修改后的书还回图书馆你的改动成为新的正本其他人下次能借到 技术层面各自干什么Depot服务器端存储项目的所有文件、所有历史版本记录谁在什么时候签出了什么、提交了什么管理文件锁、分支、标签等元数据你永远不直接编辑 Depot 里的文件Workspace本地Depot 中部分或全部文件的本地副本你实际打开 LabVIEW 编辑、编译、测试的地方包含一个隐藏的 p4config / .p4root 配置告诉 P4V “这个文件夹对应 Depot 的哪个路径”可以有多个比如一个用于主线开发一个用于紧急修复❓ 为什么要分两边不能直接在服务器上改吗这是新手最常有的疑问。原因有四安全性: 如果所有人直接操作同一个中央仓库一个人误删/覆盖就会毁掉整个项目。Workspace 是隔离的沙盒你的错误只影响自己Submit 前还有机会 Revert性能: LabVIEW 打开/保存 VI 需要频繁读写磁盘。如果每次操作都走网络访问服务器延迟会让开发体验崩溃。本地副本保证操作流畅离线工作: 你可以在没有网络时继续编辑、调试只是不能 Submit/Get Latest。纯服务器模式断网就停工并行协作: A 在自己的 Workspace 改模块XB 在自己的 Workspace 改模块Y互不干扰。只有通过 Submit → Get Latest 才产生交集冲突可控 实际操作建议一个开发者通常只需要 1 个主 Workspace除非你需要同时维护多个分支Workspace 命名规范: 建议用 用户名_机器名_用途如 zhangsan_pc_main方便团队识别定期 Get Latest: 每天开工前先同步减少后续 Resolve 的痛苦不要手动删除 Workspace 文件夹来清理: 应该用 P4V → Delete Workspace否则服务器端的映射记录会变成僵尸条目我的labview项目打开然后要保存的时候就所有文件都要提示是否要保存这样的话岂不是所有都要签出Q我的labview项目打开然后要保存的时候就所有文件都要提示是否要保存这样的话岂不是所有都要签出A这是一个非常经典的 LabVIEW Perforce 痛点千万不要点“全部保存”然后全部签出abVIEW 的 .vi 文件是二进制结构即使你完全没有修改任何逻辑以下操作也会触发“已修改”标记打开 VI 时 LabVIEW 自动重编译/更新了内部缓存不同版本的 LabVIEW 打开同一个 VI仅仅是浏览了前面板或程序框图VI 的属性节点/引用在加载时被刷新这些修改对代码逻辑毫无意义但会让 P4 认为文件被改动了。这是一个非常经典的 LabVIEW Perforce 痛点千万不要点“全部保存”然后全部签出 这会导致你刚才遇到的 changed 和 resolve 噩梦无限循环。 为什么 LabVIEW 会提示所有文件保存LabVIEW 的 .vi 文件是二进制结构即使你完全没有修改任何逻辑以下操作也会触发“已修改”标记打开 VI 时 LabVIEW 自动重编译/更新了内部缓存不同版本的 LabVIEW 打开同一个 VI仅仅是浏览了前面板或程序框图VI 的属性节点/引用在加载时被刷新这些修改对代码逻辑毫无意义但会让 P4 认为文件被改动了。✅ 正确的处理姿势关闭时的选择只保存你真正改过的 VI → 这些才需要签出没改过的 VI 一律点“不保存” → 不要怕你的代码不会丢因为本来就没改如果已经手滑点了“全部保存”立刻执行在 P4V 中右键工作区 → Revert Unchanged Files总结可以只保存改动过的不管未改动过但是提示要保存的六、使用规范1、理论上不应该全部签出只签出需要求改的文件除非同一时间确定没人会修改。2、LabVIEW打开Project有时候重新编译了点项目上的保存会提示所有文件都要保存但是没有签出过的又不能保存。所以理论上应该单独保存修改过的文件(事先要知道哪些文件要修改单独签出)然后在Project需要保存所有文件的时候直接跳过不保存。这点如果做不到提交的话可能就要解决冲突了和上一个提交的人沟通改了啥。3、目前是没开文件签出的锁所以所有文件都可以同时由多台电脑签出。4、如果需要提交了要先点同步(get latest)再提交这个操作会有一个问题在项目已经打开的情况下是仅能同步文件项目代码不会同步。因此把需保存的保存了关闭项目点击同步再点击提交。5、基于目前模块化的编程每个人要沟通好自己要改什么。目前开发更多是在Application.lvlib库里添加功能块相关的类。所以目前Application.lvlib这个库是大家共同都会签出的主要冲突应该就是这个库文件。以下是库文件的文本主要是记录库里面有什么东西比如说加了OCV类的话就会有一行是记录OCV类的。找需修改文件的路径可以右键浏览如果已经打开就看VI属性右键也能单独保存某些文件复制路径到这里就能在工作区找到对应的文件或者文件夹这个时候就能签出或者进行其他操作7. 可通过submitted面板回滚程序右键→Undo Changelist只会改变工作区要提交就重新修改提交忽略文件或者文件夹8.1、新增p4ignores.txt放在工作区的根目录p4ignores.txt内容指定忽略掉labview项目的data文件夹要注意用ANSI编码/标准自动程序2026年7月10日/data8.2、打开P4V→右键选中根目录→Open command window here输入后回车p4setignoresp4ignores.txt#设置忽略文件的参数8.3、可以输入以下命令查看已经忽略了的文件夹或文件p4 ignores-v#查看忽略了什么文件# 以下是返回e:\gd_project\滁州比亚迪\CZBYDWorkspace\CZBYD_think_8218p4 ignores-v#FILE - defaults#LINE 1:**/.p4root.../.p4root/....../.p4root#FILE e:\gd_project\滁州比亚迪\CZBYDWorkspace\CZBYD_think_8218\p4ignores.txt#LINE 1:/标准自动程序2026年7月10日/datae:/gd_project/滁州比亚迪/CZBYDWorkspace/CZBYD_think_8218/标准自动程序2026年7月10日/data/... e:/gd_project/滁州比亚迪/CZBYDWorkspace/CZBYD_think_8218/标准自动程序2026年7月10日/data8.4、如果data里面的文件已经纳入管控就先删除后提交。后面再往data放的文件就不会再收p4管控在忽略后p4 add和p4 Reconcile都不会对忽略的文件生效可以把p4ignores.txt也纳入p4管控其路径就是在工作区的根路径