# Code Versioning and Forking

The IP Commons supports code versioning and forking through the use of version-controlled NFTs and on-chain version history. Each update to a code NFT is represented as a new version, with its own metadata and content hash, linked to the previous version through a parent-child relationship.

Developers can fork existing code NFTs to create new branches or variations while maintaining a reference to the original code. The forking process creates a new NFT that inherits the metadata and content of the parent NFT but with a new version number and ownership.

{% hint style="info" %}
The IP Commons also integrates with decentralized version control systems, such as Radicle or GitHub, to enable seamless collaboration and merging of code changes across forks and branches. Developers can use familiar Git commands and workflows to push and pull code updates, which are automatically synced with the corresponding code NFTs on the Flex blockchain.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://flexecosystem.gitbook.io/flex-docs/protocol/flex-commons/code-versioning-and-forking.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
