Difference between revisions of "Contributor's Guide"

From Morevna Project Wiki
Jump to navigationJump to search
(Defining a project directory structure)
(Intro + Concept documentation)
Line 1: Line 1:
So, you about to contribute to Morevna Project? That's great!  
+
So, you are about to contribute to Morevna Project? That's great! But it's often happens what for a person who are willing to contribute it could be difficult to find where to begin with. Working in collaboration on such complex project implies the use of various open-source tools. Git, wiki, make... All this stuff could confuse even the ones who are more or less familiar with open source development model. Also, to manage the project data effectively we should define and follow certain policy. This manual was written with the purpose to guide you into the depths of Morevna Project's infrastructure and help to understand the main principles of contributor workflow.
  
How you could help? First of all, let me invite you to the wiki. There is always a lot of pending tasks at the [[Main Page|main page]]. There you could track a progress made on particular tasks, watch which isn't reflected on this blog. There you could find some concept documentation you need to get familiar with.
+
= Concept documentation =
  
If you want to dig into project a bit deeper, let me guide you into the depths of this amazing-time-killing-machine.  
+
First of all, it is better to get familiar with the concept documentation. Let me invite you to the [[Main Page|Morevna Project wiki]] - it is a good place to start.
 +
 
 +
There is always a lot of pending tasks at the [[Main Page|main page]], so you could see what is planned to be done in nearest time and who is responsible for it. You could track a progress made on particular tasks by other contributors watching the [[Special:RecentChanges|Recent Changes page]].
 +
 
 +
To be able to edit wiki pages you need to [[Special:UserLogin|register]].  Please don't forget to write summary for your changes so other people could easily understand what you have done without watching whole page. For information on using the wiki software visit [http://meta.wikimedia.org/wiki/Help:Contents#For_editors User's Guide]. Generally wiki syntax is intuitive and easy to learn just by watching the markup of existing pages.
 +
 
 +
The most common question is how to upload an image. To insert image into post, just write this tag in the message body:
 +
 
 +
[[Image:Filename.jpg]]
 +
 
 +
where Filename.jpg is the name which will be assigned to your image after it will be uploaded. After you save page at the place you inserted the tag you will see a link. Clicking this link will guide you to the file upload form. After upload your image will appear on the page instead of the tag. If you made a new version of the existing file it's better to upload it under the same name - the wiki stores the file changing history and previous versions could be easily reverted if mistake happens.
 +
 
 +
= Getting the production files =
 +
 
 +
If you want to go deeper and work directly with the production files, you should
 +
 
 +
But let's first
  
 
So what do we have at the base of all this stuff? A [[Screenplay|screenplay]]. Yep, the main thing. And, my bad, it is still not translated into English! Maybe thats the point where you could help?
 
So what do we have at the base of all this stuff? A [[Screenplay|screenplay]]. Yep, the main thing. And, my bad, it is still not translated into English! Maybe thats the point where you could help?
Line 80: Line 96:
 
git remote add origin ssh://127.0.0.1/home/zelgadis/projects/morevna/git/demo.git/
 
git remote add origin ssh://127.0.0.1/home/zelgadis/projects/morevna/git/demo.git/
 
git fetch
 
git fetch
 +
 +
Without them work in collaboration becomes a pain. dictates reglament

Revision as of 15:57, 12 December 2008

So, you are about to contribute to Morevna Project? That's great! But it's often happens what for a person who are willing to contribute it could be difficult to find where to begin with. Working in collaboration on such complex project implies the use of various open-source tools. Git, wiki, make... All this stuff could confuse even the ones who are more or less familiar with open source development model. Also, to manage the project data effectively we should define and follow certain policy. This manual was written with the purpose to guide you into the depths of Morevna Project's infrastructure and help to understand the main principles of contributor workflow.

Concept documentation

First of all, it is better to get familiar with the concept documentation. Let me invite you to the Morevna Project wiki - it is a good place to start.

There is always a lot of pending tasks at the main page, so you could see what is planned to be done in nearest time and who is responsible for it. You could track a progress made on particular tasks by other contributors watching the Recent Changes page.

To be able to edit wiki pages you need to register. Please don't forget to write summary for your changes so other people could easily understand what you have done without watching whole page. For information on using the wiki software visit User's Guide. Generally wiki syntax is intuitive and easy to learn just by watching the markup of existing pages.

The most common question is how to upload an image. To insert image into post, just write this tag in the message body:

File:Filename.jpg

where Filename.jpg is the name which will be assigned to your image after it will be uploaded. After you save page at the place you inserted the tag you will see a link. Clicking this link will guide you to the file upload form. After upload your image will appear on the page instead of the tag. If you made a new version of the existing file it's better to upload it under the same name - the wiki stores the file changing history and previous versions could be easily reverted if mistake happens.

Getting the production files

If you want to go deeper and work directly with the production files, you should

But let's first

So what do we have at the base of all this stuff? A screenplay. Yep, the main thing. And, my bad, it is still not translated into English! Maybe thats the point where you could help?

Well, ok, some concepts could be explained without need to read a screenplay. Just know what it is exists. Oh, yeah, it is exists and we splitted it into parts which we call "scenes". Each scene is a significant and relatively independent part of the story, where a particular sequence of particular actions happening in particular place (or places). Each scene in our screenplay is referred by number, which assigned according the order of the scenes.

For the project directory tree we have following structure defined by screenplay:

File:Project structure 01.jpg

The animation sources of every scene we store in separate directory with corresponding number.

Project directory tree is stored in the git repository. It is currently in private mode, so you should request an access to it first to be able to work with production files. To request the access just contact the team.

There is a scene, what currently have a special status - it is a scene 04. It is special, because it is almost exact equivalent of Morevna Project Demo, which we currently working on. So, Morevna Project Demo could be considered as a scene too.

Ok, so our working scene is demo.

$ mkdir morevnaproject $ cd morevnaproject

Currently there are two repositories available - "production" and "demo".

Production is a superproject which contains shared data for the all parts of the project. Generally it is impossible to work on particular part of the project without having a production repository fetched first. So let's clone it:

git clone ssh://user@127.0.0.1/home/zelgadis/projects/morevna/git/production.git/

cd production/ git submodule init

now fetch a modules. Currently it has just one module - demo. To fetch it issue following commands:

git can not clone into existing dir, so let's remove empty demo directory $ rmdir demo

...and then clone a repository on it's place

$ git clone ssh://user@127.0.0.1/home/zelgadis/projects/morevna/git/demo.git

(Empty directory is a placeholder for submodule, so it's undesirable to remove it from production repository forever - 'cause git treat this action as removing a module).

Revert: git checkout tag_name git submodule update demo

Note: if you just pass 'git submodule update' it will fetch all modules which wasn't fetched and update all modules to correspond current superproject revision.

Return to work: git checkout master git submodule update demo

then in each subproject directory do 'git checkout master', i.e.: cd demo && git checkout master

It is planned with a storyboard. Storyboard is divided into shots.

Note: Always push submodules before production!

Error to updte: To ssh://user@git.tuxfamily.org/gitroot/morevna/demo.git

! [rejected]        master -> master (non-fast forward)

error: failed to push some refs to 'ssh://user@git.tuxfamily.org/gitroot/morevna/demo.git'

> git fetch

I want to work on an upstream branch other than "master"

$ git checkout --track -b <local name> origin/<remote name> Note: this creates a local branch <local name> based on the upstream branch and switches your working copy to that branch. $ git pull $ git push origin <local name>

Switching origin

git remote rm origin git remote add origin ssh://127.0.0.1/home/zelgadis/projects/morevna/git/demo.git/ git fetch

Without them work in collaboration becomes a pain. dictates reglament