{"adoption": {"forks": 42, "observed_at": "2026-08-28T04:03:17.959317+00:00", "stars": 1031}, "canonical_url": "https://ross.abutalabs.com/products/mergepbx", "card": {"archived": false, "artifact_type": "cli-tool", "description": "script for merging XCode project files in git", "domain": ["developer-tools", "version-control", "apple-ecosystem"], "enriched": true, "function": ["version-control", "developer-tools", "parser"], "health_score": 20, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["simonwagner/mergepbx"], "name": "simonwagner/mergepbx", "platform": ["cli", "python"], "pushed_at": "2017-12-22T16:19:33+00:00", "repo": "simonwagner/mergepbx", "stars": 1031, "tags": ["xcode", "git-merge-driver", "pbxproj", "merge-conflicts", "macos"], "topics": ["xcode", "git", "merging", "pbxproj"], "urls": [], "use_cases": ["merge xcode project files in git without manual conflict resolution", "set up a git merge driver for pbxproj files", "reduce merge conflicts when adding files to an xcode project", "use git mergetool to resolve project.pbxproj conflicts", "collaborate on ios projects with fewer git conflicts"], "what_it_is": "A Python-based git merge driver that understands the structure of Xcode's .pbxproj project files to resolve merge conflicts automatically. It is configured as a git merge tool or merge driver for projects tracked in version control.", "when_to_avoid": ["you need a maintained tool with recent updates or guaranteed support for unusual pbxproj formats", "you use version control other than git", "you need automatic resolution of true semantic conflicts like rename vs delete"], "when_to_choose": ["your team uses git with Xcode and frequently hits pbxproj merge conflicts", "you want a free, scriptable merge driver for project.pbxproj files"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mergepbx", "repo": "simonwagner/mergepbx", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.959317+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:07:29.667552+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f985b27f27c405a8095f6ffd9fd971323eaba0a24a1f75ab88ce77814eb4fe8c", "fetched_at": "2026-08-28T04:03:17.959317+00:00", "kind": "readme", "missing": false, "url": "https://github.com/simonwagner/mergepbx"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5148, "days_push": 3176, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}