xUnique
xUnique copied to clipboard
`folder reference` with same name has conflict hash value after xunique
to reproduce:
- in XCode, add folder to a group,
choose
Create folder references
instead of the defaultCreate groups
- add another folder with same name, to the same group
- run xunique
- the folder reference with same name would result same hash values, cause others disappear from XCode
note: when add same folder ref to different group, this issue won't happen
PS:
- why I need folder reference with same name:
- add generated source files
- add header and sources references for convenient for code browsing, headers and sources are come from many sub modules with same folder structure
- why not add to different group:
- that requires additional group and section names in pbxproj file
- when sub modules changes, the pbxproj file changes, further more, the order of the sections in pbxproj file would change, causing the pbxproj file more inconvenient to manage by version control, especially when the pbxproj file are generated by script files
Sorry for the late reply.
Do you know what's the entry for folder references
in Xcode project file? something starts with PBX???
, like PBXGroup for groups.
it's something like this
/* Begin PBXBuildFile section */
04FE6AFC20D37C48008D2E1A /* zfsrc in Resources */ = {isa = PBXBuildFile; fileRef = 04FE6AFB20D37C48008D2E1A /* zfsrc */; };
04FE6AFE20D37CFC008D2E1A /* zfsrc in Resources */ = {isa = PBXBuildFile; fileRef = 04FE6AFD20D37CFB008D2E1A /* zfsrc */; };
...
/* Begin PBXFileReference section */
04FE6AFB20D37C48008D2E1A /* zfsrc */ = {isa = PBXFileReference; lastKnownFileType = folder; name = zfsrc; path = ../../../../../ZF/ZFCore/zfsrc; sourceTree = "<group>"; };
04FE6AFD20D37CFB008D2E1A /* zfsrc */ = {isa = PBXFileReference; lastKnownFileType = folder; name = zfsrc; path = ../../../../../ZF/ZFAlgorithm/zfsrc; sourceTree = "<group>"; };
...
/* Begin PBXGroup section */
E26189EC36AF05F05B0E5289D2564D10 /* ProjectFiles */ = {
isa = PBXGroup;
children = (
04FE6AFB20D37C48008D2E1A /* zfsrc */,
04FE6AFD20D37CFB008D2E1A /* zfsrc */,
...
/* Begin PBXResourcesBuildPhase section */
83745D09F71B763541FB81C529246249 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
04FE6AFE20D37CFC008D2E1A /* zfsrc in Resources */,
04FE6AFC20D37C48008D2E1A /* zfsrc in Resources */,
note:
- when added as
folder reference
, it also adds toCopy Bundle Resources
inBuild Phases
, but for header and source files, it's not we want and typically we would remove it manually in Build Phases