Welcome to the Xilinx Tcl App Store GitHub Repository!
A Tcl app store is an open source repository of Tcl code designed primarily, but not necessarily for use with the Xilinx Vivado Design Suite. An app is a grouping or collection of one or more Tcl scripts that is published and maintained by an owner. The app owner acts as a gatekeeper for that code and we only accept contributions for an app from the owner. In addition, the entire repository is managed by a Xilinx gatekeeper that controls pushes to the public repo.
This project is currently in a "beta" phase, and we are limiting access. To contribute, either by adding a new app, or by modifying an existing app, please send an email to: [email protected]
-
Get a github account <USER> and download and install git on your machine (GitHub for Windows)
-
Ask for permission to XilinxTclStore repository by sending e-mail to [email protected]
-
Sign on to github.com
-
Switch to Xilinx at upper left side by your account name <USER>
-
Click Xilinx/XilinxTclStore under Repositories
Press "Fork"(upper right hand side) and create fork of XilinxTclStore to your account
-
Switch to a shell on your machine (we recommend GitShell for windows)
If you have already cloned the repository then skip this step. Otherwise to pull this repository from within a firewall you will need to configure http.proxy and https.proxy as some company might enforce HTTPS over HTTP. Note this setting may be different for your system. If you have questions contact your IT network administrator:
git config --global https.proxy https://proxy:80
git config --global http.proxy http://proxy:80
#Create and cd to a working directory, for instance ~/github/
mkdir <WORKING_DIR>
cd <WORKING_DIR>
git config --global USER.name <USER> #github USER name
git config --global USER.email your_email@your_company.com
- Clone the repository
We recommend working off of only the master branch for simplicity. You can work on a different branch but this requires additional syncing and merging. If you are familiar with this methodology you can use it, otherwise stick with working off the master branch of each repo. You need to clone your fork of the Xilinx master repo to your local area. Don't foget to substitute <USER> for your real github account name:
On Windows
cd <WORKING_DIR>
git clone https://github.com/<USER>/XilinxTclStore.git
On Linux
cd <WORKING_DIR>
git clone https://<USER>@github.com/<USER>/XilinxTclStore.git
You will need to enter your github password when prompted.
Now you have cloned the repo directories under "<WORKING_DIR>/XilinxTclStore"
cd <WORKING_DIR>/XilinxTclStore
git status
- Set up remote to point to the Xilinx master repo if this has not been done yet. This is required to be able to sync the local repo with the Xilinx master repo
git remote add upstream https://github.com/Xilinx/XilinxTclStore.git
- Check out the entire master branch (you can also check out individual files by passing the specific file name). Below is the command for checking out the entire default branch.
git checkout
-
Add your application code to the respective directory. For a new app, create the directories following the taxonomy tclapp/<YOUR_COMPANY>/<YOUR_APP> (for an example see tclapp/mycompany/myapp), including test code. Note you can use your github account name in place of <YOUR_COMPANY> if you would like.
For more information on creating application, refer to the following section: ####My First Vivado Tcl App
-
Mark files for adding. Make sure you add all necessary files, including the tclIndex, pkgIndex.tcl, and package provider files (3 in addition to the "normal" tcl source files. The tclIndex and pkgIndex.tcl files are generated by Vivado - described later in the section for My First Vivado Tcl App.
cd ./XilinxTclStore
git add tclapp/<YOUR_COMPANY>/<YOUR_APP>
- Commit to local repository
git commit -m "your description of the changes"
- Push to your cloned master <USER>/XilinxTclStore in Github
git push origin
- Send Pull Request. Switch back to github.com in a web browser, and navigate to your repo https://help.github.com/articles/creating-a-pull-request
Press "Pull Request" button right upper-ish
Add any additiona note if you wish
Done!
Make sure you are set up as a normal contributor (name/email/proxy config settings)
Since you will be merging content from other branches and repos, you need to set some merge configuration options:
git config --global merge.defaultToUpstream true
- Create a repository by cloning XilinxTclStore, skip to next step if repository already exists locally
On Windows
git clone https://github.com/<USER>/XilinxTclStore.git
On Linux
git clone https://<USER>@github.com/<USER>/XilinxTclStore.git
- Update local repo with github master
git fetch
- Merge any changes
git merge --ff
- Set up remote to point to the Xilinx master repo if this has not been done yet. This is required to be able to sync the local repo with the Xilinx master repo
git remote add upstream https://github.com/Xilinx/XilinxTclStore.git
- Update local repo with <USER> branch
git fetch remote_name
- Merge changes from <USER> branch. Use "master" or the name of the branch if the user forked.
git merge remote_name/remote_branch
e.g.
git merge upstream/master
-
Fix any merge conlicts
-
Add the changes and commit
git add .
git commit -m "update notes"
-
Run tests and check content
-
Push to github or go to step 11
git push origin master
go to Step 12
- Go to Github.com Pull Request from the <USER>.
If everything is good, merge, add comments and close the pull request.
If something is not good, add comments so the requester can make changes.
If something is bad, add comments, reject it and close the pull request.
https://help.github.com/articles/merging-a-pull-request
- Delete the local repository, or forked branch if you created one.
git branch -r -d remote_name/remote_branch
e.g.
git branch -r -d raj/rajklair
Or in browser, delete this branch after merging when prompted.
Done!
Adding a new app to the repository