Hi Yarko - see comments inline below:
> want to be able to start from a particular version of a particular repo
>
> if it's
github.com/edx - I might prefer a "release" tag, rather than
> "bleeding edge"
> if someone asks for help, or an addition to their site (e.g.
>
education.mongodb.com), I'd want their repos, and version tags;
I don't think you will need to use the vagrant/base/devstack directory
for what you are doing.
When you do a `vagrant up` in the
configuration/vagrant/release/devstack directory it will check out
the configuration repo and run the following command:
ansible-playbook -i localhost, -c local vagrant-devstack.yml
If you look at vagrant-devstack.yml file
(
https://github.com/edx/configuration/blob/master/playbooks/vagrant-devstack.yml)
you can see where it is setting the ref for edx-platform -
edx_platform_version: 'master'.
If instead you want the edx-platform version to be set to "release"
modify the following line in the devstack Vagrantfile:
ansible-playbook -i localhost, -c local vagrant-devstack.yml
to:
ansible-playbook -i localhost, -c local vagrant-devstack.yml -e
"edx_platform_version=release"
You can override any variable set in vagrant-devstack.yml this way.
(now that I have read the rest of your response I think you already
are aware of this)
>
> want to be able to easily change development branches - to merge work from
> others, or keep others from my own bleeding edge work;
> want to be able to evolve a theme or skinning, so be able to specify a
> canonical theme, and change to an "in-development" version, change
> back-and-forth easily
Once you have the devstack running it should be relatively
straightforward to switch branches, forks,
git bisects, etc.
> it would also be nice to be able to hand a course developer a fullstack
> course development environment for their & their team's use.
> I also want to be able to actually test, which means I'd like everything
> that went into making a system tagged the same (not just edx-platform);
>
> and I'd like to be able to fork, and specify forks for any such items
>
If I'm understanding you correctly it sounds like you want to give a
vagrant image to
a course developer that has code from an edx-platform fork.
For this I suggest using the fullstack vagrant image and follow the
instructions to change
the edx-platform repo to use a fork -
https://github.com/edx/configuration/wiki/edX-Managing-the-Production-Stack#wiki-using-an-edx-platform-fork
Once you have a working VM you can issue a `vagrant package` to create
a new image and hand it to them.
>
> Here: make this change to your Vagrantfile:
>
>> --- Vagrantfile+ 2014-01-30 23:34:29.000000000 -0600
>> +++ Vagrantfile 2014-01-30 22:36:09.000000000 -0600
>> @@ -16,7 +16,7 @@
>> # this can cause problems (e.g. looking for templates that no longer
>> exist).
>> /edx/bin/update configuration master
>>
>> -ansible-playbook -i localhost, -c local vagrant-devstack.yml
>> +ansible-playbook -i localhost, -c local vagrant-devstack.yml --extra-vars
>> "@/vagrant/build_version.json"
>> SCRIPT
>
>
Good idea though I would make it a .yml file instead of a json file since yaml
is easier for humans to parse (and we can add comments).
I hope that answers all of your questions, let me know if there was
anything I missed!
-John