All Projects → mob-sakai → Gitdependencyresolverforunity

mob-sakai / Gitdependencyresolverforunity

Licence: mit
This plugin resolves git url dependencies in the package for Unity Package Manager. You can use a git url as a package dependency!

Projects that are alternatives of or similar to Gitdependencyresolverforunity

Upmgitextension
This package extends the UI of Unity Package Manager (UPM) for the packages installed from git repository.
Stars: ✭ 438 (+247.62%)
Mutual labels:  unity, unity3d, package, package-manager
Unityasync
Task and Async Utility Package for Unity. Start co-routines from anywhere.
Stars: ✭ 58 (-53.97%)
Mutual labels:  unity, unity3d, package, package-manager
Projeny
A project and package manager for Unity
Stars: ✭ 656 (+420.63%)
Mutual labels:  dependency, unity3d, package, package-manager
Boss
Dependency Manager for Delphi
Stars: ✭ 188 (+49.21%)
Mutual labels:  dependency, package, package-manager
Unity Package Tools
A set of developer tools to make it easier to create and distribute packages for the native Unity Package Manager.
Stars: ✭ 44 (-65.08%)
Mutual labels:  unity, package, package-manager
Lwrpshaders
A collection of high customizable unlit shaders for Lightweight Render Pipeline
Stars: ✭ 125 (-0.79%)
Mutual labels:  unity, unity3d
Unitydecompiled
Now unnecessary, use the official code instead: https://github.com/Unity-Technologies/UnityCsReference
Stars: ✭ 1,486 (+1079.37%)
Mutual labels:  unity, unity3d
Towerdefense
A Tower Defense style game example in Unity
Stars: ✭ 122 (-3.17%)
Mutual labels:  unity, unity3d
Gdk For Unity Fps Starter Project
SpatialOS GDK for Unity FPS Starter Project
Stars: ✭ 119 (-5.56%)
Mutual labels:  unity, unity3d
Cscore
cscore is a minimal-footprint library providing commonly used helpers & patterns for your C# projects. It can be used in both pure C# and Unity projects.
Stars: ✭ 115 (-8.73%)
Mutual labels:  unity, unity3d
Rock Generator
C# rock generator
Stars: ✭ 118 (-6.35%)
Mutual labels:  unity, unity3d
Arkit Unity3d
Access ARKit features like world-tracking, live video rendering, plane estimation and updates, hit-testing API, ambient light estimation, and raw point cloud data.
Stars: ✭ 124 (-1.59%)
Mutual labels:  unity, unity3d
Ma textureatlasser
Texture atlas creator for Unity
Stars: ✭ 116 (-7.94%)
Mutual labels:  unity, unity3d
Unity3d Globe
Unity3D Implementation of Chrome Experiment WebGL Globe
Stars: ✭ 115 (-8.73%)
Mutual labels:  unity, unity3d
Minimalcompute
Stars: ✭ 122 (-3.17%)
Mutual labels:  unity, unity3d
Unitystyleguide
For file structure, naming conventions and other things
Stars: ✭ 115 (-8.73%)
Mutual labels:  unity, unity3d
Geomapping With Unity Mapbox
Geomap is the virtualization of data that maps a Country. Mapbox Unity SDK gives data(Global map layers of Streets, Buildings, Elev, and Satellite) generating custom 3D worlds for Mobile VR/AR apps.
Stars: ✭ 118 (-6.35%)
Mutual labels:  unity, unity3d
Shurikenplus
A collection of custom shaders for Unity particle system (Shuriken).
Stars: ✭ 121 (-3.97%)
Mutual labels:  unity, unity3d
Unity Scriptableobjects Game Events
Based on a great talk by Ryan Hipple, here is my improved version of his Game Event system for Unity
Stars: ✭ 121 (-3.97%)
Mutual labels:  unity, unity3d
Pcxeffects3
Unity VFX with point cloud
Stars: ✭ 121 (-3.97%)
Mutual labels:  unity, unity3d

Git Dependency Resolver For Unity

This plugin resolves git-based dependencies in the package for Unity Package Manager.
You can use git repositories url as a package dependencies! 👍

logo

PRs Welcome

<< Description | Install | Usage | Development Note | Contributing | Change log >>





Description

In Unity 2018.3, the Unity Package Manager (UPM) supported Git. :)

This update allows us to quickly install packages on code hosting services such as GitHub.

However, UPM does not support git-based dependencies in the package. :(

[ package-a/package.json ]
{
  "name": "com.coffee.package-a",
  "version": "0.1.0",
  "dependencies": {
    "com.coffee.core-a" : "https://github.com/mob-sakai/GitPackageTest#core-a-0.1.0"
  }
}

When the above package is installed, the following error occur. console

Git-based dependencies in packages feature is on the roadmap for 2020, but no specific ETA.


This plugin resolves git-based dependencies in the package.
You can use git repositories url as a package dependencies! 👍

Features

  • Easy to use: just install
  • Resolve git-based dependencies in packages
  • Automatically uninstall unused packages that is installed by this plugin
  • Support GitHub, Bitbucket, GitLab, etc.
  • Support private repository
  • Support Unity 2018.3 or later
  • Support .Net 3.5 and 4.x
  • Update package with a specific tag/branch/hash
  • Deterministic package installation
  • Support CI environment
  • Support path query parameter (sub-directory) even Unity 2019.2 or earlier
    • path must be a relative path to the root of the repository.
    • path query parameter must be placed before the revision anchor. The reverse order will fail.
    • A package manifest (package.json) is expected in the specified path.
    • e.g. With Path query parameter: https://github.com/user/repo.git?path=/example/folder
    • e.g. With revision anchor and path query parameter: https://github.com/user/repo.git?path=/example/folder#v1.2.3

Notes

From: https://forum.unity.com/threads/git-support-on-package-manager.573673/page-3#post-4552084

There is no conflict detection and/or resolution algorithm. The lastest package found with the same name is used. This is not how the package manager resolve dependency (See https://docs.unity3d.com/Manual/upm-conflicts-auto.html).

In Unity's algorithm, package conflicts are resolved by "dependency-level from root".
The all packages resolved by this plugin are "dependency-level=1".
Therefore, in some cases, the package of the intended version may not be installed.

For example, in the case of a project with a dependency graph like this:

project (root)
 ├ package A: 1.0.0
 │  └ package X: 2.0.0
 └ package B: 1.0.0
    └ package C: 2.0.0
       └ package X: 2.0.1

This plugin's algorithm

Install -> A: 1.0.0, B: 1.0.0, C: 2.0.0, X: 2.0.1

Unity's algorithm

Install -> A: 1.0.0, B: 1.0.0, C: 2.0.0, X: 2.0.0





Installation

Requirement

  • Unity 2018.3 or later

Using OpenUPM

This package is available on OpenUPM. You can install it via openupm-cli.

openupm add com.coffee.git-dependency-resolver

Using Git

Find the manifest.json file in the Packages directory in your project and edit it as follows:

{
  "dependencies": {
    "com.coffee.git-dependency-resolver": "https://github.com/mob-sakai/GitDependencyResolverForUnity.git",
    ...
  },
}

To update the package, change suffix #{version} to the target version.

  • e.g. "com.coffee.git-dependency-resolver": "https://github.com/mob-sakai/GitDependencyResolverForUnity.git#1.2.0",

Or, use UpmGitExtension to install and update the package.





Usage

For package user

  • Install this plugin.
  • If the dependencies are not resolved successfully, reopen the project. If that does not work, try the following:
    1. Close the project.
    2. Delete Library/ScriptAssemblies directory in the project.
    3. Open the project.
  • When Unity Package Manager Error window is opens, click Continue.
    window
  • Add Packages/.* to .gitignore to hide auto-installed package.

For package developer

  • Find the package.json file in your package and edit it as follows:
{
  ...
  "gitDependencies": {
    "your.package": "https://github.com/yourname/yourpackage.git#v1.2.3",
    ...
  }
}
  • You can use path query parameter (sub-directory) even Unity 2019.2 or earlier.
    • e.g. "your.package": "https://github.com/yourname/yourpackage.git?path=/pkg/dir#v1.2.3"
    • path must be a relative path to the root of the repository.
    • path query parameter must be placed before the revision anchor. The reverse order will fail.
    • A package manifest (package.json) is expected in the specified path.
  • You must use gitDependencies instead of dependencies to define git-based dependencies for the package.
    • This plugin also supports dependencies to resolve git-based dependencies, but if dependencies include packages that UPM can't resolve, it will fail to start Unity in CI environment.
  • You must announce to your package users that they must install com.coffee.git-dependency-resolver.
  • It is recommended to use SemVer as a tag or branch name.
    • e.g. 1.0.0, 0.5.0-preview10, 0.1.0-alpha+daily5





Contributing

Issues

Issues are very valuable to this project.

  • Ideas are a valuable source of contributions others can make
  • Problems show where this project is lacking
  • With a question you show where contributors can improve the user experience

Pull Requests

Pull requests are, a great way to get your ideas into this repository.
See CONTRIBUTING.md.

Support

This is an open source project that I am developing in my spare time.
If you like it, please support me.
With your support, I can spend more time on development. :)






License

Author

mob-sakai

See Also

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].