refactor(client): 删除游戏核心管理器和场景脚本
一些检测仍在等待运行
Docs Build / build-and-deploy (push) Waiting to run

- 移除 ConfigManager 配置管理器类
- 移除 GameManager 全局单例管理器类
- 移除 NetworkManager 网络连接管理器类
- 移除 CharacterData 和 ItemData 数据模型类
- 移除 BagScene、BattleScene、LobbyScene 等场景脚本
- 移除 EncounterBubble 和 EventFeedPanel UI组件脚本
- 更新代理邀请文档中的服务器连接方式
- 更新同步状态表格中的代理任务分配信息
- 添加 MiMo 任务完成总结和审查修复记录
这个提交包含在:
徐勤民 2026-07-03 21:34:51 +08:00
父节点 9e9ef90ca7
当前提交 521603a899
共有 846 个文件被更改,包括 305075 次插入2296 次删除

35
.github/workflows/docs-deploy.yml vendored 普通文件
查看文件

@ -0,0 +1,35 @@
name: Docs Build
on:
push:
branches:
- main
paths:
- "docs/**"
- "mkdocs.yml"
- "README.md"
- "scripts/build-docs-site.sh"
- "scripts/deploy-docs-site.sh"
- "deploy/docs/**"
- ".github/workflows/docs-deploy.yml"
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install MkDocs
run: |
python -m pip install --upgrade pip
python -m pip install mkdocs-material
- name: Build site
run: make docs-build

2
.gitignore vendored 普通文件
查看文件

@ -0,0 +1,2 @@
site/
.DS_Store

10
.idea/.gitignore 自动生成的 vendored 普通文件
查看文件

@ -0,0 +1,10 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Ignored default folder with query files
/queries/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

8
.idea/lawless.iml 自动生成的 普通文件
查看文件

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml 自动生成的 普通文件
查看文件

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/lawless.iml" filepath="$PROJECT_DIR$/.idea/lawless.iml" />
</modules>
</component>
</project>

7
.idea/vcs.xml 自动生成的 普通文件
查看文件

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

查看文件

@ -1,4 +1,4 @@
.PHONY: help up down logs migrate seed reset build test clean
.PHONY: help up down logs migrate seed reset build test clean docs-build docs-serve docs-deploy
help:
@echo "洪荒大陆 - 本地开发命令"
@ -10,6 +10,9 @@ help:
@echo " make reset - down -> up -> seed"
@echo " make build - 构建 Nakama 插件"
@echo " make test - 运行服务端单元测试"
@echo " make docs-build - 生成文档站静态文件"
@echo " make docs-serve - 本地预览文档站"
@echo " make docs-deploy - 同步文档站到服务器目录"
@echo " make clean - 清理容器与构建产物"
up:
@ -36,6 +39,15 @@ build:
test:
$(MAKE) -C server test
docs-build:
./scripts/build-docs-site.sh
docs-serve:
mkdocs serve -a 0.0.0.0:8000
docs-deploy:
./scripts/deploy-docs-site.sh
clean:
docker compose down -v
rm -f server/honghuang-server.so

查看文件

@ -6,6 +6,11 @@
本项目为《洪荒大陆》挂机手游的后端骨架,基于 **Nakama 3.x + Go 插件 + PostgreSQL 16 + Valkey + Nacos 2.x**
设计文档站统一发布到 **https://docs.xuqinmin.com**,部署在 **106.54.23.149** 上:
- 文档站通过服务器侧自动拉取并重建保持同步
- SSL 证书使用 `acme.sh` 自动签发和续期
## 设计文档总览
### 游戏设计文档GDD- 33个

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

二进制文件未显示。

查看文件

@ -0,0 +1,2 @@
#Thu Jul 02 20:40:23 CST 2026
gradle.version=8.2

二进制文件未显示。

二进制文件未显示。

查看文件

@ -0,0 +1,28 @@
apply plugin: 'com.android.application'
android {
namespace 'com.honghuang.game'
compileSdk 30
defaultConfig {
applicationId "com.honghuang.game"
minSdk 24
targetSdk 30
versionCode 1
versionName "1.0.0"
}
buildTypes {
release {
minifyEnabled false
}
debug {
minifyEnabled false
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

查看文件

@ -0,0 +1,2 @@
appMetadataVersion=1.1
androidGradlePluginVersion=8.1.0

查看文件

@ -0,0 +1,61 @@
System.register([], function (_export, _context) {
"use strict";
var cc, Application;
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
return {
setters: [],
execute: function () {
_export("Application", Application = /*#__PURE__*/function () {
function Application() {
_classCallCheck(this, Application);
this.settingsPath = 'src/settings.json';
this.showFPS = false;
}
_createClass(Application, [{
key: "init",
value: function init(engine) {
cc = engine;
cc.game.onPostBaseInitDelegate.add(this.onPostInitBase.bind(this));
cc.game.onPostSubsystemInitDelegate.add(this.onPostSystemInit.bind(this));
}
}, {
key: "onPostInitBase",
value: function onPostInitBase() {
// cc.settings.overrideSettings('assets', 'server', '');
// do custom logic
}
}, {
key: "onPostSystemInit",
value: function onPostSystemInit() {
// do custom logic
}
}, {
key: "start",
value: function start() {
return cc.game.init({
debugMode: false ? cc.DebugMode.INFO : cc.DebugMode.ERROR,
settingsPath: this.settingsPath,
overrideSettings: {
// assets: {
// preloadBundles: [{ bundle: 'main', version: 'xxx' }],
// }
profiling: {
showFPS: this.showFPS
}
}
}).then(function () {
return cc.game.run();
});
}
}]);
return Application;
}());
}
};
});

查看文件

@ -0,0 +1 @@
{"importBase":"import","nativeBase":"native","name":"internal","deps":[],"uuids":["07d3aae9f","08HKsx3M1CjoZS8kBMyBxH","142hclxMJCtKsI7grraJiz","173rzDCmtLirAL3Fi4hVge","1cAq5vRJJJFbj4dJKjseTN","1dCO9ipQNM4ouaRskIc/fT","509DSLyINOL48RziM7hZ+h","51HSYzCadL3axC93gDISSz","5cYB2W5MdGmJkbfuZ0sRB5","5dRaoA4GRJOLMUQmXwwiWM","609xlc7CpF67qUiVX2DoHQ","6aLQc0vZ5N35RuyqUkmMt1","71Hr4R9nNM2ZqDY8YLpUxb","784FhKQ0NHJ4834U5lwqLb","81Dpbk5FZEaJtZ9OjzlzLA","87HDtsc3lBnb2jeUsjmrkN","8bvbzdXNRBALbVt8liW2EH","93Yf2QulJPhKqTboeP1XbK","97CwWYvLBHFJH7LoFEDczY","97G9sjP/ZD67QiHDAWWjZj","a3zQCfCrBCDZJ4uf2rk5u8","b51hFfA3BNfKrTwZTMcc+Y","baIUdvKGZPgZxNbjWTFuRI","bc1kzGLdlD9qu+ZjGNMyAy","c0FDkGmu1EfpQ2KuhRLRtu","c2chXYaDVLaL+7verGEAwE","d1NGQ2rJZCcbhjH0/erZWw","d9MFkNu5JMyIvRI80Cf57f","ddOhRNq39B8IK4LkOgkNSW","e9qpo+WytKx6LHBz3isrJP","ef6OKj6s5Ce7Txy4qTfsd9","f0QW5oAgBLd6kmT50W5JTa","f9KAbXF2hEP6/oErzehNDw","fdoJXLgx1GAa2UhGATlj3o"],"paths":{"1":["db:/internal/default_materials/default-trail-material",1,1],"2":["db:/internal/default_materials/default-particle-gpu-material",1,1],"3":["db:/internal/effects/particles/builtin-particle-trail",0,1],"4":["db:/internal/effects/internal/builtin-graphics",0,1],"5":["db:/internal/effects/legacy/terrain",0,1],"6":["db:/internal/default_materials/ui-alpha-test-material",1,1],"7":["db:/internal/effects/pipeline/skybox",0,1],"8":["db:/internal/effects/pipeline/copy-pass",0,1],"9":["db:/internal/effects/pipeline/deferred-lighting",0,1],"10":["db:/internal/effects/for2d/builtin-sprite",0,1],"11":["db:/internal/effects/pipeline/post-process/tone-mapping",0,1],"12":["db:/internal/effects/particles/builtin-billboard",0,1],"13":["db:/internal/default_materials/default-billboard-material",1,1],"14":["db:/internal/effects/internal/builtin-clear-stencil",0,1],"15":["db:/internal/effects/util/profiler",0,1],"16":["db:/internal/default_materials/default-clear-stencil",1,1],"17":["db:/internal/effects/pipeline/planar-shadow",0,1],"18":["db:/internal/effects/util/splash-screen",0,1],"19":["db:/internal/effects/particles/builtin-particle-gpu",0,1],"20":["db:/internal/effects/builtin-unlit",0,1],"21":["db:/internal/default_materials/default-spine-material",1,1],"22":["db:/internal/physics/default-physics-material",2,1],"23":["db:/internal/default_materials/missing-effect-material",1,1],"24":["db:/internal/default_materials/default-particle-material",1,1],"25":["db:/internal/effects/for2d/builtin-spine",0,1],"26":["db:/internal/effects/particles/builtin-particle",0,1],"27":["db:/internal/default_materials/missing-material",1,1],"28":["db:/internal/default_materials/ui-sprite-gray-alpha-sep-material",1,1],"29":["db:/internal/default_materials/ui-base-material",1,1],"30":["db:/internal/default_materials/ui-sprite-gray-material",1,1],"31":["db:/internal/default_materials/ui-graphics-material",1,1],"32":["db:/internal/default_materials/ui-sprite-alpha-sep-material",1,1],"33":["db:/internal/default_materials/ui-sprite-material",1,1]},"scenes":{},"packs":{"07d3aae9f":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]},"versions":{"import":[],"native":[]},"redirect":[],"debug":false,"extensionMap":{},"hasPreloadScript":true,"dependencyRelationships":{},"types":["cc.EffectAsset","cc.Material","cc.PhysicsMaterial"]}

文件差异因一行或多行过长而隐藏

查看文件

@ -0,0 +1 @@
{"importBase":"import","nativeBase":"native","name":"main","deps":["internal"],"uuids":["baIUdvKGZPgZxNbjWTFuRI","fdjsU2o1RKF5x0TziDw3jI"],"paths":{"0":["db:/internal/physics/default-physics-material",1,1],"1":["db:/internal/default_renderpipeline/builtin-forward",0,1]},"scenes":{},"packs":{},"versions":{"import":[],"native":[]},"redirect":[0,"0"],"debug":false,"extensionMap":{},"hasPreloadScript":true,"dependencyRelationships":{},"types":["cc.RenderPipeline","cc.PhysicsMaterial"]}

查看文件

@ -0,0 +1 @@
[1,0,0,[["RenderQueueDesc",["stages","isTransparent","sortMode"],0],["ForwardPipeline",["_flows"],3,9],["ShadowFlow",["_name","_stages"],2,9],["ShadowStage",["_name"],2],["ForwardFlow",["_name","_priority","_stages"],1,9],["ForwardStage",["_name","renderQueues"],2,9]],[[1,0,1],[2,0,1,2],[3,0,2],[4,0,1,2,3],[5,0,1,2],[0,0,2],[0,1,2,0,4]],[[0,[[1,"ShadowFlow",[[2,"ShadowStage"]]],[3,"ForwardFlow",1,[[4,"ForwardStage",[[5,["default"]],[6,true,1,["default"]]]]]]]]],0,0,[],[],[]]

查看文件

@ -0,0 +1,20 @@
System.register("chunks:///_virtual/main",[],(function(){return{execute:function(){}}}));
(function(r) {
r('virtual:///prerequisite-imports/main', 'chunks:///_virtual/main');
})(function(mid, cid) {
System.register(mid, [cid], function (_export, _context) {
return {
setters: [function(_m) {
var _exportObj = {};
for (var _key in _m) {
if (_key !== "default" && _key !== "__esModule") _exportObj[_key] = _m[_key];
}
_export(_exportObj);
}],
execute: function () { }
};
});
});

查看文件

@ -0,0 +1 @@
System.register([],(function(e){"use strict";return{execute:function(){e("default","assets/bullet.release.wasm-BIzkn7bF.wasm")}}}));

文件差异因一行或多行过长而隐藏

查看文件

@ -0,0 +1 @@
System.register([],(function(e){"use strict";return{execute:function(){e("default","assets/spine-CC34fKUR.wasm")}}}));

查看文件

@ -0,0 +1 @@
System.register([],(function(e){"use strict";return{execute:function(){e("default","assets/spine.js.mem-pbmhlDdv.bin")}}}));

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 1.1 KiB

查看文件

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Cocos Creator | honghuang-client</title>
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,minimum-scale=1,maximum-scale=1,minimal-ui=true"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="full-screen" content="yes"/>
<meta name="screen-orientation" content="portrait"/>
<meta name="x5-fullscreen" content="true"/>
<meta name="360-fullscreen" content="true"/>
<meta name="renderer" content="webkit"/>
<meta name="force-rendering" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<link rel="stylesheet" type="text/css" href="./style.css"/>
<link rel="icon" href="favicon.ico"/>
</head>
<body>
<h1 class="header">honghuang-client</h1>
<div id="GameDiv" cc_exact_fit_screen="false" style="width: 1280px; height: 960px;">
<div id="Cocos3dGameContainer">
<canvas id="GameCanvas" width="1280" height="960" tabindex="99"></canvas>
</div>
</div>
<p class="footer">
Created with <a href="https://www.cocos.com/products" title="Cocos Creator">Cocos Creator</a>
</p>
<!-- Polyfills bundle. -->
<script src="src/polyfills.bundle.js" charset="utf-8"> </script>
<!-- SystemJS support. -->
<script src="src/system.bundle.js" charset="utf-8"> </script>
<!-- Import map -->
<script src="src/import-map.json" type="systemjs-importmap" charset="utf-8"> </script>
<script>
System.import('./index.js').catch(function(err) { console.error(err); })
</script>
</body>
</html>

查看文件

@ -0,0 +1,23 @@
System.register(["./application.js"], function (_export, _context) {
"use strict";
var Application, application;
function topLevelImport(url) {
return System["import"](url);
}
return {
setters: [function (_applicationJs) {
Application = _applicationJs.Application;
}],
execute: function () {
application = new Application();
topLevelImport('cc').then(function (engine) {
return application.init(engine);
}).then(function () {
return application.start();
})["catch"](function (err) {
console.error(err);
});
}
};
});

查看文件

@ -0,0 +1,4 @@
System.register([], function(_export, _context) { return { execute: function () {
System.register("chunks:///_virtual/rollupPluginModLoBabelHelpers.js",[],(function(e){return{execute:function(){function r(e,r){for(var t=0;t<r.length;t++){var i=r[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,a(i.key),i)}}function t(r,i){return(t=e("setPrototypeOf",Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,r){return e.__proto__=r,e}))(r,i)}function i(e,r){if(e){if("string"==typeof e)return n(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,r):void 0}}function n(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,i=new Array(r);t<r;t++)i[t]=e[t];return i}function o(e,r){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}function a(e){var r=o(e,"string");return"symbol"==typeof r?r:String(r)}e({applyDecoratedDescriptor:function(e,r,t,i,n){var o={};Object.keys(i).forEach((function(e){o[e]=i[e]})),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0);o=t.slice().reverse().reduce((function(t,i){return i(e,r,t)||t}),o),n&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(n):void 0,o.initializer=void 0);void 0===o.initializer&&(Object.defineProperty(e,r,o),o=null);return o},arrayLikeToArray:n,assertThisInitialized:function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},createClass:function(e,t,i){t&&r(e.prototype,t);i&&r(e,i);return Object.defineProperty(e,"prototype",{writable:!1}),e},createForOfIteratorHelperLoose:function(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=i(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},inheritsLoose:function(e,r){e.prototype=Object.create(r.prototype),e.prototype.constructor=e,t(e,r)},initializerDefineProperty:function(e,r,t,i){if(!t)return;Object.defineProperty(e,r,{enumerable:t.enumerable,configurable:t.configurable,writable:t.writable,value:t.initializer?t.initializer.call(i):void 0})},setPrototypeOf:t,toPrimitive:o,toPropertyKey:a,unsupportedIterableToArray:i})}}}));
} }; });

查看文件

@ -0,0 +1 @@
{"imports":{"cc":"./../cocos-js/cc.js"}}

文件差异因一行或多行过长而隐藏

文件差异因一行或多行过长而隐藏

文件差异因一行或多行过长而隐藏

查看文件

@ -0,0 +1,51 @@
body {
cursor: default;
padding: 0;
border: 0;
margin: 0;
text-align: center;
background-color: white;
font-family: Helvetica, Verdana, Arial, sans-serif;
}
body, canvas, div {
outline: none;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
-khtml-user-select: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
/* Remove spin of input type number */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
/* display: none; <- Crashes Chrome on hover */
-webkit-appearance: none;
margin: 0; /* <-- Apparently some margin are still there even though it's hidden */
}
canvas {
background-color: rgba(0, 0, 0, 0);
}
#GameDiv {
margin: 0 auto;
position:relative;
border:5px solid black;
border-radius: 10px;
box-shadow: 0 5px 50px #333
}
#Cocos3dGameContainer, #GameCanvas {
width: 100%;
height: 100%;
}
:root {
--safe-top: env(safe-area-inset-top);
--safe-right: env(safe-area-inset-right);
--safe-bottom: env(safe-area-inset-bottom);
--safe-left: env(safe-area-inset-left);
}

查看文件

@ -0,0 +1,10 @@
{
"version": 3,
"artifactType": {
"type": "COMPATIBLE_SCREEN_MANIFEST",
"kind": "Directory"
},
"applicationId": "com.honghuang.game",
"variantName": "debug",
"elements": []
}

查看文件

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>

查看文件

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>

文件差异因一行或多行过长而隐藏

查看文件

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/xuqinmin/Projects/NewsProject/lawless/client/android-app/app/src/debug/jniLibs"/></dataSet></merger>

某些文件未显示,因为此 diff 中更改的文件太多 显示更多