https://wiki.sugarlabs.org/api.php?action=feedcontributions&user=Ignacio+Rodr%C3%ADguez&feedformat=atomSugar Labs - User contributions [en]2024-03-29T05:53:38ZUser contributionsMediaWiki 1.35.2https://wiki.sugarlabs.org/index.php?title=Activities/Turtle_Art/Plugins&diff=94299Activities/Turtle Art/Plugins2015-01-15T14:36:39Z<p>Ignacio Rodríguez: /* Math */</p>
<hr />
<div>==Plugins==<br />
<br />
As of Version 106, there is plugin support for Turtle Art. The basic idea is to let developers add new palettes and blocks to support additional functionality without having to make changes to any of the core Turtle Art packages. If a plugin is present, it is loaded when Turtle Art is launched and any palettes or blocks defined by the plugin are made available to the user.<br />
<br />
The plugin mechanism is currently used to provide support for sensors, the camera, RFID, and the Media, Extras, and Portfolio palettes. A plugin has been [http://lists.sugarlabs.org/archive/iaep/2011-March/012715.html developed for WeDo] [http://tonyforster.blogspot.com/2012/01/wedo-plugin-for-turtle-art.html (and here)] and additional plugins are being developed for Arduino, NXT, and GoGo.<br />
<br />
'''NOTE''': As of Version 193, it is necessary to use a set of refactored plugins. These will be posted to the wiki ASAP.<br />
<br />
===How to install a plugin===<br />
Plugins are typically distributed as a *.tar.gz archive.<br />
<br />
In versions 137+, there is a built-in method for installing plugins from Turtle Art itself:<br />
# Download the plugin to your Sugar Journal, a USB key, or $HOME/Documents.<br />
# Click on the 'Load plugin' button found on the Activity toolbar.<br />
# Select the plugin downloaded in Step 1.<br />
# Go to the Palette toolbar to confirm that the plugin has installed and loaded properly.<br />
<br />
In early versions of Turtle Art, please follow these instructions:<br />
<br />
[[File:Archivemanager.jpg]]<br />
<br />
In Gnome, click on the link in your browser and open with Archive Manager, extract the files in the plugins directory of the archive to<br />
<br />
/home/olpc/Activities/TurtleArt.activity/plugins<br />
<br />
you may need to make the Activities directory writeable first, in Terminal type<br />
<br />
chmod 777 /home/olpc/Activities<br />
<br />
If your distribution does not include Gnome, the following commands in Terminal will download the Physics archive to the current directory<br />
<br />
cd ~/Activities/TurtleArt.activity<br />
wget http://wiki.sugarlabs.org/images/c/c1/Physics-plugin.tar.gz<br />
gunzip Physics-plugin.tar.gz<br />
tar xvf Physics-plugin.tar<br />
<br />
Note that you should not need root access to install plugins into your home directory.<br />
<br />
===How to uninstall a plugin===<br />
Your plugin is installed in a subdirectory of<br />
<br />
/home/olpc/Activities/TurtleArt.activity/plugins<br />
<br />
In Terminal or Gnome, delete that subdirectory. You may need to make the Activities directory writeable first, in Terminal type<br />
<br />
chmod 777 /home/olpc/Activities<br />
<br />
===Available plugins===<br />
These plugins would typically already be installed<br />
* turtleart-extras (the extra palettes that distinguish Turtle Blocks from Turtle Art)<br />
* turtleart-camera<br />
* turtleart-sensors <br />
* rfid (This plugin allows interfacing with a RFID reader)<br />
<br />
====Xevents====<br />
Xevents it's a plugin for make accesibility interfaces in an easy way.<br />
<br />
[[File:Xpalette1.png]]<br />
<br />
=====GIT code=====<br />
http://sourceforge.net/p/butia/code/ci/master/tree/turtlebots/xevents/<br />
<br />
=====Download=====<br />
http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php/Archivo:Xevents.tar.gz<br />
<br />
=====Wiki=====<br />
http://wiki.sugarlabs.org/go/Xevents<br />
<br />
====Butia====<br />
<br />
Add a palette to control the Butiá robot<br />
<br />
[[File:butia_palette.png|1050px]]<br />
<br />
And a extra palette to control the hacks pin of USB4Butiá board and special sensors:<br />
<br />
[[File:butia_palette_extra.png|1050px]]<br />
<br />
Andrés Aguirre is part of the Butiá team in Montevideo:<br />
:We have released the 1.0 version of the sources, which has full integration with tortugarte (http://www.fing.edu.uy/inco/proyectos/butia/publicaciones.html). Last month we gave away nearly 30 Butiá robots in a robotic event organized by the University. These robots were given to secondary schools throughout the country, in this event we gave some tutorials and exercises to do with our help. One of the schools made a great line follower in tortugarte ;) : http://www.youtube.com/watch?v=Szp0LWLyPIg Then on the second day we give some tutorials and some children really enjoyed the experience, like Pedro a 10 year old child who really has programming skills! http://www.flickr.com/photos/butiarobot/5059177334/ http://www.youtube.com/aguirrea#p/u/7/p0y11iyhFko <br />
:In future months we will go to the schools where we give the robots to continue teaching and giving new challenges. If you would like to see more about Butiá, we have a flickr site: http://www.flickr.com/photos/butiarobot/ and also a web page: http://www.fing.edu.uy/inco/proyectos/butia <br />
<br />
Butiá is also featured in a short film by Antel [http://www.adinettv.com.uy/video/2932] (go to 1:30).<br />
<br />
[http://www.fing.edu.uy/inco/proyectos/butia Proyecto Butiá] (in Spanish) , [[Activities/TurtleBots]] (in English)<br />
<br />
=====GIT code=====<br />
<br />
[http://sourceforge.net/projects/butia/?source=directory Butia in SourceForge]<br />
<br />
=====Download=====<br />
<br />
[http://www.fing.edu.uy/inco/proyectos/butia/files/plugins/butia_plugin.tar.gz butia_plugin.tar.gz]<br />
<br />
====FollowMe====<br />
<br />
This plugin uses the camera and get the position of an object of a color.<br />
The plugin add this palette:<br />
[[File:turtleart-followme-palette2.png|1050px]]<br />
<br />
=====Examples=====<br />
<br />
The "classic" use: on "Start", use the "Calibrate" block to open a window that shows the camera output. In the center of that window there is red square. The FollowMe Plugin uses an algorithm that obtains the "promedial" color of the object in the square. The result of that algorithm is shown in a small square in the corner. When you consider that the color is a good "representation of the object", press any key, the window will close, and FollowMe will use this color. After calibration, you can use the "X position" and "Y position" blocks. The block "X position" is the "center" of the object seen by the camera along the "X" (horizontal) axis. This value is an integer between 0 and 320. When the object is not detected,the algorithm returns -1. The operation of the "Y position" block are the same, but returns the position respect the "Y" (vertical) axis. The value returned is between 0 and 240.<br />
<br />
[[File:turtleart-followme-classic.png|250px]]<br />
<br />
When you know the color to "follow" (it occurs rarely, since the color varies under changing light conditions) you can use the "Follow RGB" block. This block sets the color directly to the algorithm. In all cases, the color has a threshold of 25 in each component set by default. With the "Threshold" block this value can be changed.<br />
<br />
[[File:turtleart-followme-specificcolor.png|250px]]<br />
<br />
The third option, is to use the "FollowMe" block that "follows" a generic color similar to that shown.<br />
<br />
[[File:turtleart-followme-turtlecolor.png|250px]]<br />
<br />
Videos of the plugin ongoing:<br />
<br />
[http://www.youtube.com/watch?v=ECP_GoTUm00 FollowMe plugin in TurtleArt - Part 1]<br />
<br />
[http://www.youtube.com/watch?v=r6BIcfnVuwU FollowMe plugin in TurtleArt - Part 2]<br />
<br />
The code used in this videos:<br />
<br />
[[File:turtleart-followme-example-ongoing.png|250px]]<br />
<br />
=====Download=====<br />
<br />
[http://www.fing.edu.uy/inco/proyectos/butia/files/plugins/followme_plugin.tar.gz followme_plugin.tar.gz]<br />
<br />
====Pattern detection====<br />
<br />
Add a palette to enable pattern detection with the camera. <br />
<br />
[[File:PatternDetectionPalette.png]]<br />
<br />
Translation:<br />
* "Viendo Señal": Pattern in sight<br />
* "Distancia Señal" Pattern distance<br />
<br />
This palette adds blocks to detect ARToolkit patterns and the distance to them. This plugin is an ARToolkit wrapper, and comes with several traffic signals already configured. <br />
<br />
=====Examples=====<br />
<br />
Here are some samples and videos on how to use the palette blocks.<br />
<br />
[[File:PatternDetectionSampleStop.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}} <br />
<br />
[[File:PatternDetectionSampleYield.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}}<br />
<br />
[[File:PatternDetectionSampleWrongWay.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}}<br />
<br />
[http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php/Butia_reconocimiento_marcas Pattern detection plugin] (in Spanish) <br />
<br />
=====GIT code=====<br />
<br />
Hosted with the Butiá source<br />
[http://sourceforge.net/p/butia/code/ci/dcc226276a565a54bbdf1807c30ff50aa648f70f/tree/turtle_art_plugin/pattern_detection/ Pattern Detection in SourceForge (part of Butia project)]<br />
<br />
=====Download=====<br />
<br />
[http://www.fing.edu.uy/inco/proyectos/butia/files/plugins/pattern_detection.tar.gz pattern_detection.tar.gz]<br />
<br />
====WeDo====<br />
<br />
Tony Forster created a [http://tonyforster.blogspot.com/2012/01/wedo-plugin-for-turtle-art.html WeDo plugin] based on the [https://github.com/itdaniher/WeDoMore/tree/master/TurtleArt work of I.T. Daniher]. Alan Aguiar has also helped with the plugin.<br />
<br />
The source code repository is available here: [https://github.com/itdaniher/wedomore].<br />
<br />
[[File:WeDo plugin.png|250px]]<br />
<br />
=====Download=====<br />
<br />
* [[File:Wedo_plugin_2.tar.gz]] Version 2, which supports multiple WeDo devices.<br />
* [http://www.fing.edu.uy/inco/proyectos/butia/files/plugins/wedo_plugin.tar.gz /wedo_plugin.tar.gz]<br />
<br />
'''Note:''' Check out https://github.com/itdaniher/WeDoMore/tree/master/udev for instructions on how to setup the proper permissions talk to the device. In the new versions of Sugar the udev is included.<br />
<br />
====LEGO NxT====<br />
<br />
Motors palette:<br />
<br />
[[File:turtleart-lego-nxt-palette.png|1050px]]<br />
<br />
Sensors palette:<br />
<br />
[[File:turtleart-lego-nxt-palette-sensors.png|1050px]]<br />
<br />
=====Examples=====<br />
<br />
[[File:turtleart-lego-nxt-example1.png]]<br />
<br />
Moving the Turtle:<br />
<br />
[http://www.youtube.com/watch?v=C6Na6MRfyEc Example - Part 1]<br />
<br />
[http://www.youtube.com/watch?v=UlD-c2CE0bs Example - Part 2]<br />
<br />
A crane:<br />
[http://www.youtube.com/watch?v=S8HRbDLO7LM Example of Crane]<br />
<br />
=====GIT code =====<br />
<br />
You can see all code in: [http://git.sugarlabs.org/nxt_plugin NXT_plugin GIT]<br />
<br />
=====Downloads=====<br />
<br />
LEGO NxT Plugin [http://www.fing.edu.uy/inco/proyectos/butia/files/plugins/nxt_plugin.tar.gz nxt_plugin.tar.gz]<br />
<br />
====Expeyes====<br />
<br />
The Expeyes Plugin:<br />
<br />
[https://github.com/walterbender/expeyes]<br />
<br />
[[Image:Expeyes.png|300px]]<br />
<br />
This is a first pass at a plugin for the ExpEyes Junior. For more info, see [http://expeyes.in].<br />
<br />
Note that you need to set up the udev rules for the device before first using this plugin by running the postinst script bundled with the plugin:<br />
<br />
sudo sh ~/Activities/TurtleArt.activity/plugins/eyes/postinst<br />
<br />
====Arduino====<br />
The Arduino is an inexpensive single board computer which can be controlled by Turtle Art and used for robotics experiments. The XO-4 touchscreen laptop comes with two unpopulated circuit boards, the [http://wiki.laptop.org/go/XO_Stick XOstick] and the [http://wiki.laptop.org/go/XOrduino XOrduino].<br />
<br />
The Arduino Plugin:<br />
<br />
[[File:turtleart-arduino-palette.png|1050px]]<br />
<br />
There are several efforts to develop Turtle Art support for Arduino.<br />
<br />
* [http://tonyforster.blogspot.com/2010/10/arduino-fork-of-turtle-art.html Setting up Turtle Arduino]<br />
* [http://tonyforster.blogspot.com/2010/10/turtle-arduino-display-inputs.html Read digital inputs] [[File:Ard.ta]]<br />
* [http://tonyforster.blogspot.com/2010/10/turtle-arduino-digital-write.html Arduino write output] [[File:Turtle Art Activity ardout.ta]] [[File:Tamyblock mouse.odt]]<br />
* [http://tonyforster.blogspot.com/2012/01/arduino-and-xo-laptop.html The Freetronics Leostick]<br />
<br />
<br />
The Arduino functionality was corrected from previous versions:<br />
* Analog and digital reading now works correctly<br />
* Auto detection of ttyUSBx port for FTDI device (Arduino board uses this for USB)<br />
<br />
It requires the Firmata protocol to be uploaded to the Arduino board. (see [http://wiki.laptop.org/go/Arduino here])<br />
Use the latest Firmata version (2.1 as of now) downloaded from the Firmata page (firmata.org)<br />
The Firmata version included with the Arduino IDE has some inconsistencies.<br />
<br />
This version has english and spanish translations.<br />
<br />
=====Examples=====<br />
[[File:turtleart-arduino-example1.png]]<br />
<br />
=====GIT code =====<br />
<br />
You can see all code in: [http://git.sugarlabs.org/arduino arduino_plugin GIT]<br />
<br />
=====Downloads=====<br />
The plugin file can be downloaded from [http://www.fing.edu.uy/inco/proyectos/butia/files/plugins/arduino_plugin.tar.gz arduino_plugin.tar.gz].<br />
<br />
====Currency====<br />
This plugin adds a pallette of currency (notes and coins), these items can be acted on by arithmetic operators<br />
<br />
[[File:Oz currency.png|250px]] [[File:Soles.png|250px]]<br />
<br />
:[[File:Oz-coins.tar.gz]] Australian coins plugin<br />
:[[File:Oz-bills.tar.gz]] Australian bills plugin<br />
:[[File:Oz-coins-and-bills.tar.gz]] Australian coins and bills plugin<br />
:[[File:Colombia-currency.tar.gz]] Colombian peso plugin<br />
:[[File:Mexican-currency.tar.gz]] Mexican peso plugin<br />
:[[File:Paraguay-currency.tar.gz]] Paraguay Gurani plugin<br />
:[[File:Rwanda-currency.tar.gz]] Rwanda francs plugin<br />
:[[File:UY-currency.tar.gz]] Uruguayan peso plugin <br />
:[[File:US-bills.tar.gz]] US dollars plugin<br />
:[[File:Soles.tar.gz]] Peruvian Soles plugin<br />
:<strike>[[File:US-currency.tar.gz]] US dollars plugin</strike><br />
<br />
====Nutrition====<br />
This is just a first rough pass at a plugin do calculations on the nutritional value of different food types. The plugin itself comes with some sample foods: apples, bananas, cookies, and cake. It is expected that the food choices will be customized by deployment. See https://www.choosemyplate.gov/SuperTracker/ for nutritional values (calories, protein, carbohydrates, fiber, and fat) of different foods.<br />
<br />
[[File:Food-plugin.png|250px]]<br />
<br />
=====Downloads=====<br />
<br />
[[File:Food-plugin.tar.gz]] ('''Note:''' Requires TurtleBlocks v133 or greater)<br />
<br />
==== Physics ====<br />
This plugin allows you to construct a Physics model which can be saved to the Journal and run with the Physics Activity [[Activities/Physics]]<br />
<br />
[[File:Physics pallette.jpg]]<br />
<br />
Use these blocks to create objects that are added to the bodylist and jointlist of a Box2d database used by the Physics Activity. Objects are positioned by the turtle x,y and colored based on the current pen attributes. From left to right:<br />
* density: set the object density (0 is light; 1 is heavy)<br />
* friction: set the object friction (0 is slippery; 1 is sticky)<br />
* bounciness: set the object restitution (0 is rigid; 1 is bouncy)<br />
* start polygon: use the current turtle x,y position to specify the first vertex of a polygon<br />
* add point: use the current turtle x,y position to add a vertex to a polygon<br />
* end polygon: use the current turtle x,y position to specify the last vertex of a polygon<br />
* end filled polygon: use the current turtle x,y position to specify the last vertex of a ''filled'' polygon<br />
: '''Note:''' The polygon must be 'normal', e.g., no crossed lines; no holes. Since Box2d does not support concave polygons, all polygons are converted to triangles (triangulation). (In Turtle Blocks, these triangles are shown by slight variations in color.)<br />
* triangle: add a triangle object at the current turtle x,y position<br />
* circle: add a circle object at the current turtle x,y position<br />
* rectangle: add a rectangle object at the current turtle x,y position<br />
* gear: add a gear object at the current turtle x,y position with the number of teeth as the argument<br />
* gear radius: returns the radius of a gear with the number of teeth as the argument (useful for positioning gears)<br />
* motor: add a motor at the current turtle x,y position (attached to the object at this position)<br />
* pin: add a pin at the current turtle x,y position (attached to the object at this position) to prevent movement<br />
* pen: add a pen at the current turtle x,y position (attached to the object at this position) to trace motion<br />
* joint: add a joint between the object at the current turtle x,y position and the object at x, y<br />
* save as Physics project: save the current bodylist and jointlist as a Physics project in the Journal<br />
'''Note:''' The current model is cleared whenever the Erase button is pressed or a Clean block is run.<br />
<br />
===== Example =====<br />
A simple gear and motor generated in Turtle Art:<br />
<br />
[[File:TAGearTA.png|300px]]<br />
[[File:TAGear.png|300px]]<br />
<br />
'''For Turtle Blocks versions 107 - 183'''<br />
[[File:TAgear.ta]] [[File:Gear.physics]]<br />
<br />
'''For Turtle Blocks verisons 184 - '''<br />
[http://people.sugarlabs.org/walter/physics-plugin.tar.gz]<br />
<br />
'''A chain'''<br />
<br />
[[File:Chain.png|300px]]<br />
<br />
Turtle Blocks project file: [http://people.sugarlabs.org/walter/chain.tb]<br />
<br />
=====Downloads=====<br />
<br />
[[File:Physics-plugin.tar.gz]] Physics plugin<br />
<br />
[http://github.com/walterbender/physics-plugin git repository]<br />
<br />
==== Logic ====<br />
This plugin provides logical bit operations in Turtle Art, such as AND, OR, XOR, NOT, logical shift left, logical shift right.<br />
<br />
[[File:Logic.png]]<br />
<br />
===== Example =====<br />
[[File:And.png|300px]]<br />
[[File:Lsl2.png|300px]]<br />
<br />
=====Downloads=====<br />
[[File:Logic.tar.gz]] Logic plugin<br />
<br />
==== Math ====<br />
The math plugin allows to use advanced mathematical functions in your program.<br />
<br />
[[File:Tb-math.png|800px]]<br />
===== Download =====<br />
http://people.sugarlabs.org/francis/tb-math-plugin/<br />
===== Source code =====<br />
https://github.com/sdanielf/turtleblocks-math<br />
<br />
<br />
==== Mashape ====<br />
This plugins enable the mashape palette (plugins using web APIs)<br><br />
The mashape palette is easy to detect, its use a sugarized icon of original mashape icon. (A monkey ''':)''')<br><br />
Also, this version include Translate plugin.<br><br />
<br />
[[File:Tb-mashape-palette.png|800px]]<br><br><br />
[[File:Tb-mashape-plugin.png|800px]]<br />
<br />
===== Download =====<br />
[[File:TA-Mashape.tar.gz]]<br />
===== Source code =====<br />
https://github.com/ignaciouy/mashape-plugin<br />
<br />
=== GNOME plugins ===<br />
There are some plugins that are specific to running Turtle Art from the GNOME desktop. These include mechanisms for uploading projects to Facebook (See [[Activities/TurtleArt/Fb_plugin.py]] and http://turtleartsite.appspot.com/<br />
<br />
([[File:Turtleblocks-167.1.xo]] is the Alpha version of Turtle Art for GTK3. It requires GTK3 and GST1 (both available in Sugar 0.98 on [http://wiki.laptop.org/go/13.1.0 OLPC 13.1.0 builds]) This version includes the Facebook plugin.<br />
<br />
===TurtleArt + icaro = Tortucaro===<br />
<br />
See http://proyectofedora.org/argentina/?p=320<br />
<br />
(The above link is down. The cached version of the page can be found at [http://webcache.googleusercontent.com/search?q=cache:Vab9UyzE61MJ:proyectofedora.org/argentina/%3Fp%3D320+&cd=1&hl=es&ct=clnk&gl=ar])<br />
<br />
===How to write a plugin===<br />
<br />
Your plugin should be placed in a subdirectory of the plugins directory. In that subdirectory, you need to create a .py file that defines a subclass of the Plugin class. The directory and .py file must have the same name and the subclass must also have the same name, with the additional requirement that the first letter of the class name be capitalized.<br />
<br />
For example:<br />
* the camera plugin, <code>camera_sensor.py</code> is in <code>./plugins/camera_sensor</code><br />
* the class, <code>Camera_sensor</code> is defined in <code>camera_sensor.py</code>, e.g.,<br />
<br />
from plugins.plugin import Plugin<br />
class Camera_sensor(Plugin):<br />
<br />
In that subdirectory, you will also need a __init__.py file (which can be empty) and optionally, an icon subdirectory for your palette icon.<br />
<br />
Turtle Art calls the __init__ method when starting up and traps import errors as its means to determine whether or not a plugin has the resources it needs to run. (You may want to remove this exception handler when debugging your plugin. It is in the _init_plugins method in tawindow.py.) It then calls the setup method when creating the palettes. It calls the start method whenever a stack of blocks is run and the stop method when execution is over. Also, there are methods for goto_background, return_to_foreground, and quit. (These methods are typically ignored.)<br />
<br />
Adding a new palette is simply a matter of:<br />
<br />
palette = make_palette('mypalette', # the name of your palette<br />
colors=["#00FF00", "#00A000"],<br />
help_string=_('Palette of my custom commands'))<br />
<br />
For example, if we want to add a new turtle command, 'uturn', we'd use the<br />
add_block method in the Palette class.<br />
<br />
palette.add_block('uturn', # the name of your block<br />
style='basic-style', # the block style<br />
label=_('u turn'), # the label for the block<br />
prim_name='uturn', # code reference (see below)<br />
help_string=_('turns the turtle 180 degrees'))<br />
<br />
# Next, you need to define what your block will do:<br />
# def_prim takes 3 arguments: the primitive name, the number of<br />
# of arguments, 0 in this case, and the function to call, in this<br />
# case, the canvas function to set the heading.<br />
self.tw.lc.def_prim('uturn', 0, lambda self: self.tw.canvas.seth(self.tw.canvas.heading + 180))<br />
<br />
<br />
That's it. When you next run Turtle Art, you will have a 'uturn' block<br />
on the 'mypalette' palette. <br />
<br />
You will have to create icons for the palette-selector buttons. These<br />
are kept in the icons subdirectory. You need two icons:<br />
mypaletteoff.svg and mypaletteon.svg, where 'mypalette' is the same<br />
string as the entry you used in instantiating the Palette class. Note<br />
that the icons should be the same size (55x55) as the others. (This is<br />
the default icon size for Sugar toolbars.)<br />
<br />
As of Turtle Art v137, there is a built-in mechanism for installing plugins. Please include a plugin.info file in the top level of your tar.gz bundle.<br />
<br />
plugin.info<br />
myplugin<br />
myplugin.py<br />
__init.py__<br />
icons<br />
mypluginoff.svg<br />
mypluginon.svg<br />
<br />
The plugin.info file must contain the following sections and fields:<br />
<br />
[Plugin]<br />
name=the name of your plugin<br />
palette=the names of any palettes created by your plugin as a comma-separated list<br />
<br />
e.g.,<br />
<br />
[Plugin]<br />
name=food<br />
palette=eatme, food<br />
<br />
Other fields, such as version, license, etc. may be used in the future.</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=File:TA-Mashape.tar.gz&diff=94298File:TA-Mashape.tar.gz2015-01-15T14:35:49Z<p>Ignacio Rodríguez: </p>
<hr />
<div></div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=File:Tb-mashape-plugin.png&diff=94297File:Tb-mashape-plugin.png2015-01-15T14:33:48Z<p>Ignacio Rodríguez: </p>
<hr />
<div></div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=File:Tb-mashape-palette.png&diff=94296File:Tb-mashape-palette.png2015-01-15T14:30:04Z<p>Ignacio Rodríguez: </p>
<hr />
<div></div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93837Activity Team/Git FAQ2014-12-02T21:51:38Z<p>Ignacio Rodríguez: /* How do I request a merge? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using github (github.com)==<br />
=== Help! I suddenly can't connect to GitHub! ===<br />
:Please contact to [https://github.com/contact github support], or look at [https://help.github.com/ GitHub FAQ]<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<br />
[[File:Merge-Step1.png]] <br /><br />
Click on the Pull Request button<br />
[[File:Merge-Step2.png]]<br /><br />
You will get something like that<br />
[[File:Merge-Step3.png]]<br /><br />
If you used another branch for changes, just change it in the image<br />
[[File:Merge-Step4.png]]<br /><br />
Click on Create Pull request<br />
[[File:Merge-Step5.png]]<br /><br />
Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it]]<br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on github, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to github?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Github from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
<big>NOTE:<br>THIS IS FOR GITORIOUS ONLY, NOT APPLY FOR GITHUB</big><br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in GitHub? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&diff=93836Activity Team/Git Tutorial2014-12-02T21:43:11Z<p>Ignacio Rodríguez: /* Create a Project */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
<br />
<br />
== GitHub ==<br />
<br />
Sugar Labs uses GitHub as its primary server for git repositories. While you are welcome to use other servers, it is on GitHub where you will find the master branches of the core modules and core activities.<br />
<br />
Getting started with GitHub<br />
<br />
You will learn to do the following:<br />
* Create an account, which you do once.<br />
* Create and add an SSH key, which you do once or if you change system.<br />
* Create a project, a local repository, and identify yourself to git, which you do once per project.<br />
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.<br />
<br />
=== Create an Account ===<br />
<br />
Create an account [https://github.com/join here]<br />
<br />
=== Create SSH Key on Windows ===<br />
<br />
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].<br />
<br />
* Run the puttygen.exe utility to generate a pair of private/public keys.<br />
* Click on the ''Generate'' button (Make sure SSH-2 RSA parameter is checked)<br />
* Move the mouse around to generate your key.<br />
* Once you have accumulated enough "heat", the application will generate your key pair.<br />
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.<br />
* Click on the Save private key button to save your private key in a file.<br />
<br />
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.<br />
This key can now be used on GitHub to access Git on Windows. Good luck!<br />
<br />
=== Create SSH Key on GNU/Linux ===<br />
<br />
Skip this section if you already have an SSH key in <tt>.ssh</tt> directory that you trust.<br />
<br />
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)<br />
<br />
To create a key use ''ssh-keygen''. The following command will create a “dsa” key:<br />
ssh-keygen -t dsa<br />
<br />
For creating a “rsa” key use:<br />
ssh-keygen -t rsa<br />
<br />
The key will be stored as two files in the hidden <tt>.ssh</tt> directory.<br />
<br />
<tt>id_dsa.pub</tt> is your public key. <tt>id_dsa</tt> is your private key. Only you should have access to this private key. Access to the key will grant access to GitHub in your name. For example, here is a list of files in the <tt>.ssh</tt> directory of user strom:<br />
ls -al ~/.ssh<br />
-rw------- 1 strom strom 668 2009-12-17 21:51 id_dsa<br />
-rw-r--r-- 1 strom strom 603 2009-12-17 21:51 id_dsa.pub<br />
<br />
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised. If you do it again, you must also add the new key to GitHub as described in the next section.<br />
<br />
=== Setup Git for Windows 8 ===<br />
<br />
GitHub is one way you can set up Git on Windows 8. It can be downloaded from [http://github-windows.s3.amazonaws.com/GitHubSetup.exe here]<br />
<br />
Once downloaded and installed, Git Shell can be used to execute Git commands.<br />
<br />
=== Add SSH Key ===<br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on 'Add Ssh Key'. Choose a title. Open your public key in a text editor, web browser, or even ''cat'' command, and then copy and paste the key into the text entry field. Click on ''Save''.<br />
<br />
Once you do this, GitHub trusts SSH connection from your system because your system has the private key, and GitHub has the public key. You should only need to do this once, unless you change to another system.<br />
<br />
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in <tt>~/.ssh/id_rsa.pub</tt> or <tt>~/.ssh/id_dsa.pub</tt>.)<br />
<br />
=== Create a Project === <br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.<br />
<br />
=== Create Local Repository ===<br />
<br />
Clone it from GitHub:<br />
git clone git@github.com:username/${SLUG}.git ${SLUG}.git<br />
<br />
Replace ''${SLUG}'' with your project slug value.<br />
<br />
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs. You should only need to do this once for each project and system. You can do it again if you need a fresh copy that has no changes.<br />
<br />
=== Identify Yourself to Git ===<br />
<br />
Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.<br />
<br />
If you do not use git on your system for any other project, you can configure git:<br />
<br />
git config -f ~/.gitconfig user.email <email-you-used-for-registering-project><br />
git config -f ~/.gitconfig user.name <your-name><br />
<br />
You should only need to do this once on a system.<br />
<br />
Otherwise, configure git in the repository:<br />
<br />
cd ${SLUG}.git<br />
git config user.email <email-you-used-for-registering-project><br />
git config user.name <your-name><br />
<br />
You should only need to do this once in a repository.<br />
<br />
=== Develop ===<br />
<br />
Use a text editor or integrated development environment to create new source files or change existing files. Test the results by running the activity. Do this from your local repository, or from elsewhere - then copy your files to the repository. Repeat until you are satisfied with the changes you made.<br />
<br />
<br />
=== Commit Changes ===<br />
<br />
In your local repository, find out from git what files you changed:<br />
git status<br />
<br />
Add any files that are new or changed:<br />
git add ...<br />
<br />
Tell git to collect the changes into a commit:<br />
git commit<br />
<br />
You should do this for every meaningful set of changes you make.<br />
<br />
''Note'' <code> git commit </code> ''commits your changes to your local repository only.''<br />
<br />
=== Request Review ===<br />
<br />
Before you publish changes widely, you can ask others to review your work and comment on it.<br />
<br />
git format-patch -1<br />
<br />
or<br />
<br />
git send-email<br />
<br />
You may do this for every set of changes you make.<br />
<br />
<br />
=== Push Changes ===<br />
<br />
Your changes have to be pushed from your local repository to the repository at git.sugarlabs.org so that others can see them there.<br />
<br />
git push<br />
<br />
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.<br />
<br />
<br />
=== Pull Changes ===<br />
<br />
Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.<br />
<br />
Use<br />
git pull<br />
<br />
Also, run<br />
python setup.py fix_manifest<br />
to update the .mo files after updating the .po files<br />
<br />
You should do ''git pull'' frequently; before starting development, before pushing changes, and when you see other developers commit changes.<br />
<br />
== Other Notes ==<br />
<br />
=== Tags ===<br />
<br />
alsroot taught me about another git feature: tags<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== What Pull Does ===<br />
<br />
bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/project.git master<br />
<br />
[[Category:Activity Team]]<br />
[[Category:HowTo]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&diff=93835Activity Team/Git Tutorial2014-12-02T21:42:50Z<p>Ignacio Rodríguez: /* Add SSH Key */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
<br />
<br />
== GitHub ==<br />
<br />
Sugar Labs uses GitHub as its primary server for git repositories. While you are welcome to use other servers, it is on GitHub where you will find the master branches of the core modules and core activities.<br />
<br />
Getting started with GitHub<br />
<br />
You will learn to do the following:<br />
* Create an account, which you do once.<br />
* Create and add an SSH key, which you do once or if you change system.<br />
* Create a project, a local repository, and identify yourself to git, which you do once per project.<br />
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.<br />
<br />
=== Create an Account ===<br />
<br />
Create an account [https://github.com/join here]<br />
<br />
=== Create SSH Key on Windows ===<br />
<br />
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].<br />
<br />
* Run the puttygen.exe utility to generate a pair of private/public keys.<br />
* Click on the ''Generate'' button (Make sure SSH-2 RSA parameter is checked)<br />
* Move the mouse around to generate your key.<br />
* Once you have accumulated enough "heat", the application will generate your key pair.<br />
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.<br />
* Click on the Save private key button to save your private key in a file.<br />
<br />
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.<br />
This key can now be used on GitHub to access Git on Windows. Good luck!<br />
<br />
=== Create SSH Key on GNU/Linux ===<br />
<br />
Skip this section if you already have an SSH key in <tt>.ssh</tt> directory that you trust.<br />
<br />
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)<br />
<br />
To create a key use ''ssh-keygen''. The following command will create a “dsa” key:<br />
ssh-keygen -t dsa<br />
<br />
For creating a “rsa” key use:<br />
ssh-keygen -t rsa<br />
<br />
The key will be stored as two files in the hidden <tt>.ssh</tt> directory.<br />
<br />
<tt>id_dsa.pub</tt> is your public key. <tt>id_dsa</tt> is your private key. Only you should have access to this private key. Access to the key will grant access to GitHub in your name. For example, here is a list of files in the <tt>.ssh</tt> directory of user strom:<br />
ls -al ~/.ssh<br />
-rw------- 1 strom strom 668 2009-12-17 21:51 id_dsa<br />
-rw-r--r-- 1 strom strom 603 2009-12-17 21:51 id_dsa.pub<br />
<br />
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised. If you do it again, you must also add the new key to GitHub as described in the next section.<br />
<br />
=== Setup Git for Windows 8 ===<br />
<br />
GitHub is one way you can set up Git on Windows 8. It can be downloaded from [http://github-windows.s3.amazonaws.com/GitHubSetup.exe here]<br />
<br />
Once downloaded and installed, Git Shell can be used to execute Git commands.<br />
<br />
=== Add SSH Key ===<br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on 'Add Ssh Key'. Choose a title. Open your public key in a text editor, web browser, or even ''cat'' command, and then copy and paste the key into the text entry field. Click on ''Save''.<br />
<br />
Once you do this, GitHub trusts SSH connection from your system because your system has the private key, and GitHub has the public key. You should only need to do this once, unless you change to another system.<br />
<br />
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in <tt>~/.ssh/id_rsa.pub</tt> or <tt>~/.ssh/id_dsa.pub</tt>.)<br />
<br />
=== Create a Project === <br />
<br />
Log in to Gitorious at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.<br />
<br />
=== Create Local Repository ===<br />
<br />
Clone it from GitHub:<br />
git clone git@github.com:username/${SLUG}.git ${SLUG}.git<br />
<br />
Replace ''${SLUG}'' with your project slug value.<br />
<br />
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs. You should only need to do this once for each project and system. You can do it again if you need a fresh copy that has no changes.<br />
<br />
=== Identify Yourself to Git ===<br />
<br />
Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.<br />
<br />
If you do not use git on your system for any other project, you can configure git:<br />
<br />
git config -f ~/.gitconfig user.email <email-you-used-for-registering-project><br />
git config -f ~/.gitconfig user.name <your-name><br />
<br />
You should only need to do this once on a system.<br />
<br />
Otherwise, configure git in the repository:<br />
<br />
cd ${SLUG}.git<br />
git config user.email <email-you-used-for-registering-project><br />
git config user.name <your-name><br />
<br />
You should only need to do this once in a repository.<br />
<br />
=== Develop ===<br />
<br />
Use a text editor or integrated development environment to create new source files or change existing files. Test the results by running the activity. Do this from your local repository, or from elsewhere - then copy your files to the repository. Repeat until you are satisfied with the changes you made.<br />
<br />
<br />
=== Commit Changes ===<br />
<br />
In your local repository, find out from git what files you changed:<br />
git status<br />
<br />
Add any files that are new or changed:<br />
git add ...<br />
<br />
Tell git to collect the changes into a commit:<br />
git commit<br />
<br />
You should do this for every meaningful set of changes you make.<br />
<br />
''Note'' <code> git commit </code> ''commits your changes to your local repository only.''<br />
<br />
=== Request Review ===<br />
<br />
Before you publish changes widely, you can ask others to review your work and comment on it.<br />
<br />
git format-patch -1<br />
<br />
or<br />
<br />
git send-email<br />
<br />
You may do this for every set of changes you make.<br />
<br />
<br />
=== Push Changes ===<br />
<br />
Your changes have to be pushed from your local repository to the repository at git.sugarlabs.org so that others can see them there.<br />
<br />
git push<br />
<br />
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.<br />
<br />
<br />
=== Pull Changes ===<br />
<br />
Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.<br />
<br />
Use<br />
git pull<br />
<br />
Also, run<br />
python setup.py fix_manifest<br />
to update the .mo files after updating the .po files<br />
<br />
You should do ''git pull'' frequently; before starting development, before pushing changes, and when you see other developers commit changes.<br />
<br />
== Other Notes ==<br />
<br />
=== Tags ===<br />
<br />
alsroot taught me about another git feature: tags<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== What Pull Does ===<br />
<br />
bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/project.git master<br />
<br />
[[Category:Activity Team]]<br />
[[Category:HowTo]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&diff=93834Activity Team/Git Tutorial2014-12-02T21:42:32Z<p>Ignacio Rodríguez: /* Create Local Repository */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
<br />
<br />
== GitHub ==<br />
<br />
Sugar Labs uses GitHub as its primary server for git repositories. While you are welcome to use other servers, it is on GitHub where you will find the master branches of the core modules and core activities.<br />
<br />
Getting started with GitHub<br />
<br />
You will learn to do the following:<br />
* Create an account, which you do once.<br />
* Create and add an SSH key, which you do once or if you change system.<br />
* Create a project, a local repository, and identify yourself to git, which you do once per project.<br />
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.<br />
<br />
=== Create an Account ===<br />
<br />
Create an account [https://github.com/join here]<br />
<br />
=== Create SSH Key on Windows ===<br />
<br />
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].<br />
<br />
* Run the puttygen.exe utility to generate a pair of private/public keys.<br />
* Click on the ''Generate'' button (Make sure SSH-2 RSA parameter is checked)<br />
* Move the mouse around to generate your key.<br />
* Once you have accumulated enough "heat", the application will generate your key pair.<br />
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.<br />
* Click on the Save private key button to save your private key in a file.<br />
<br />
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.<br />
This key can now be used on GitHub to access Git on Windows. Good luck!<br />
<br />
=== Create SSH Key on GNU/Linux ===<br />
<br />
Skip this section if you already have an SSH key in <tt>.ssh</tt> directory that you trust.<br />
<br />
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)<br />
<br />
To create a key use ''ssh-keygen''. The following command will create a “dsa” key:<br />
ssh-keygen -t dsa<br />
<br />
For creating a “rsa” key use:<br />
ssh-keygen -t rsa<br />
<br />
The key will be stored as two files in the hidden <tt>.ssh</tt> directory.<br />
<br />
<tt>id_dsa.pub</tt> is your public key. <tt>id_dsa</tt> is your private key. Only you should have access to this private key. Access to the key will grant access to GitHub in your name. For example, here is a list of files in the <tt>.ssh</tt> directory of user strom:<br />
ls -al ~/.ssh<br />
-rw------- 1 strom strom 668 2009-12-17 21:51 id_dsa<br />
-rw-r--r-- 1 strom strom 603 2009-12-17 21:51 id_dsa.pub<br />
<br />
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised. If you do it again, you must also add the new key to GitHub as described in the next section.<br />
<br />
=== Setup Git for Windows 8 ===<br />
<br />
GitHub is one way you can set up Git on Windows 8. It can be downloaded from [http://github-windows.s3.amazonaws.com/GitHubSetup.exe here]<br />
<br />
Once downloaded and installed, Git Shell can be used to execute Git commands.<br />
<br />
=== Add SSH Key ===<br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on 'Add Ssh Key'. Choose a title. Open your public key in a text editor, web browser, or even ''cat'' command, and then copy and paste the key into the text entry field. Click on ''Save''.<br />
<br />
Once you do this, Gitorious trusts SSH connection from your system because your system has the private key, and Gitorious has the public key. You should only need to do this once, unless you change to another system.<br />
<br />
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in <tt>~/.ssh/id_rsa.pub</tt> or <tt>~/.ssh/id_dsa.pub</tt>.)<br />
<br />
=== Create a Project === <br />
<br />
Log in to Gitorious at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.<br />
<br />
=== Create Local Repository ===<br />
<br />
Clone it from GitHub:<br />
git clone git@github.com:username/${SLUG}.git ${SLUG}.git<br />
<br />
Replace ''${SLUG}'' with your project slug value.<br />
<br />
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs. You should only need to do this once for each project and system. You can do it again if you need a fresh copy that has no changes.<br />
<br />
=== Identify Yourself to Git ===<br />
<br />
Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.<br />
<br />
If you do not use git on your system for any other project, you can configure git:<br />
<br />
git config -f ~/.gitconfig user.email <email-you-used-for-registering-project><br />
git config -f ~/.gitconfig user.name <your-name><br />
<br />
You should only need to do this once on a system.<br />
<br />
Otherwise, configure git in the repository:<br />
<br />
cd ${SLUG}.git<br />
git config user.email <email-you-used-for-registering-project><br />
git config user.name <your-name><br />
<br />
You should only need to do this once in a repository.<br />
<br />
=== Develop ===<br />
<br />
Use a text editor or integrated development environment to create new source files or change existing files. Test the results by running the activity. Do this from your local repository, or from elsewhere - then copy your files to the repository. Repeat until you are satisfied with the changes you made.<br />
<br />
<br />
=== Commit Changes ===<br />
<br />
In your local repository, find out from git what files you changed:<br />
git status<br />
<br />
Add any files that are new or changed:<br />
git add ...<br />
<br />
Tell git to collect the changes into a commit:<br />
git commit<br />
<br />
You should do this for every meaningful set of changes you make.<br />
<br />
''Note'' <code> git commit </code> ''commits your changes to your local repository only.''<br />
<br />
=== Request Review ===<br />
<br />
Before you publish changes widely, you can ask others to review your work and comment on it.<br />
<br />
git format-patch -1<br />
<br />
or<br />
<br />
git send-email<br />
<br />
You may do this for every set of changes you make.<br />
<br />
<br />
=== Push Changes ===<br />
<br />
Your changes have to be pushed from your local repository to the repository at git.sugarlabs.org so that others can see them there.<br />
<br />
git push<br />
<br />
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.<br />
<br />
<br />
=== Pull Changes ===<br />
<br />
Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.<br />
<br />
Use<br />
git pull<br />
<br />
Also, run<br />
python setup.py fix_manifest<br />
to update the .mo files after updating the .po files<br />
<br />
You should do ''git pull'' frequently; before starting development, before pushing changes, and when you see other developers commit changes.<br />
<br />
== Other Notes ==<br />
<br />
=== Tags ===<br />
<br />
alsroot taught me about another git feature: tags<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== What Pull Does ===<br />
<br />
bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/project.git master<br />
<br />
[[Category:Activity Team]]<br />
[[Category:HowTo]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&diff=93833Activity Team/Git Tutorial2014-12-02T21:42:12Z<p>Ignacio Rodríguez: /* Setup Git for Windows 8 */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
<br />
<br />
== GitHub ==<br />
<br />
Sugar Labs uses GitHub as its primary server for git repositories. While you are welcome to use other servers, it is on GitHub where you will find the master branches of the core modules and core activities.<br />
<br />
Getting started with GitHub<br />
<br />
You will learn to do the following:<br />
* Create an account, which you do once.<br />
* Create and add an SSH key, which you do once or if you change system.<br />
* Create a project, a local repository, and identify yourself to git, which you do once per project.<br />
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.<br />
<br />
=== Create an Account ===<br />
<br />
Create an account [https://github.com/join here]<br />
<br />
=== Create SSH Key on Windows ===<br />
<br />
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].<br />
<br />
* Run the puttygen.exe utility to generate a pair of private/public keys.<br />
* Click on the ''Generate'' button (Make sure SSH-2 RSA parameter is checked)<br />
* Move the mouse around to generate your key.<br />
* Once you have accumulated enough "heat", the application will generate your key pair.<br />
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.<br />
* Click on the Save private key button to save your private key in a file.<br />
<br />
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.<br />
This key can now be used on GitHub to access Git on Windows. Good luck!<br />
<br />
=== Create SSH Key on GNU/Linux ===<br />
<br />
Skip this section if you already have an SSH key in <tt>.ssh</tt> directory that you trust.<br />
<br />
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)<br />
<br />
To create a key use ''ssh-keygen''. The following command will create a “dsa” key:<br />
ssh-keygen -t dsa<br />
<br />
For creating a “rsa” key use:<br />
ssh-keygen -t rsa<br />
<br />
The key will be stored as two files in the hidden <tt>.ssh</tt> directory.<br />
<br />
<tt>id_dsa.pub</tt> is your public key. <tt>id_dsa</tt> is your private key. Only you should have access to this private key. Access to the key will grant access to GitHub in your name. For example, here is a list of files in the <tt>.ssh</tt> directory of user strom:<br />
ls -al ~/.ssh<br />
-rw------- 1 strom strom 668 2009-12-17 21:51 id_dsa<br />
-rw-r--r-- 1 strom strom 603 2009-12-17 21:51 id_dsa.pub<br />
<br />
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised. If you do it again, you must also add the new key to GitHub as described in the next section.<br />
<br />
=== Setup Git for Windows 8 ===<br />
<br />
GitHub is one way you can set up Git on Windows 8. It can be downloaded from [http://github-windows.s3.amazonaws.com/GitHubSetup.exe here]<br />
<br />
Once downloaded and installed, Git Shell can be used to execute Git commands.<br />
<br />
=== Add SSH Key ===<br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on 'Add Ssh Key'. Choose a title. Open your public key in a text editor, web browser, or even ''cat'' command, and then copy and paste the key into the text entry field. Click on ''Save''.<br />
<br />
Once you do this, Gitorious trusts SSH connection from your system because your system has the private key, and Gitorious has the public key. You should only need to do this once, unless you change to another system.<br />
<br />
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in <tt>~/.ssh/id_rsa.pub</tt> or <tt>~/.ssh/id_dsa.pub</tt>.)<br />
<br />
=== Create a Project === <br />
<br />
Log in to Gitorious at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.<br />
<br />
=== Create Local Repository ===<br />
<br />
Clone it from Gitorious:<br />
git clone git@github.com:username/${SLUG}.git ${SLUG}.git<br />
<br />
Replace ''${SLUG}'' with your project slug value.<br />
<br />
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs. You should only need to do this once for each project and system. You can do it again if you need a fresh copy that has no changes.<br />
<br />
=== Identify Yourself to Git ===<br />
<br />
Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.<br />
<br />
If you do not use git on your system for any other project, you can configure git:<br />
<br />
git config -f ~/.gitconfig user.email <email-you-used-for-registering-project><br />
git config -f ~/.gitconfig user.name <your-name><br />
<br />
You should only need to do this once on a system.<br />
<br />
Otherwise, configure git in the repository:<br />
<br />
cd ${SLUG}.git<br />
git config user.email <email-you-used-for-registering-project><br />
git config user.name <your-name><br />
<br />
You should only need to do this once in a repository.<br />
<br />
=== Develop ===<br />
<br />
Use a text editor or integrated development environment to create new source files or change existing files. Test the results by running the activity. Do this from your local repository, or from elsewhere - then copy your files to the repository. Repeat until you are satisfied with the changes you made.<br />
<br />
<br />
=== Commit Changes ===<br />
<br />
In your local repository, find out from git what files you changed:<br />
git status<br />
<br />
Add any files that are new or changed:<br />
git add ...<br />
<br />
Tell git to collect the changes into a commit:<br />
git commit<br />
<br />
You should do this for every meaningful set of changes you make.<br />
<br />
''Note'' <code> git commit </code> ''commits your changes to your local repository only.''<br />
<br />
=== Request Review ===<br />
<br />
Before you publish changes widely, you can ask others to review your work and comment on it.<br />
<br />
git format-patch -1<br />
<br />
or<br />
<br />
git send-email<br />
<br />
You may do this for every set of changes you make.<br />
<br />
<br />
=== Push Changes ===<br />
<br />
Your changes have to be pushed from your local repository to the repository at git.sugarlabs.org so that others can see them there.<br />
<br />
git push<br />
<br />
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.<br />
<br />
<br />
=== Pull Changes ===<br />
<br />
Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.<br />
<br />
Use<br />
git pull<br />
<br />
Also, run<br />
python setup.py fix_manifest<br />
to update the .mo files after updating the .po files<br />
<br />
You should do ''git pull'' frequently; before starting development, before pushing changes, and when you see other developers commit changes.<br />
<br />
== Other Notes ==<br />
<br />
=== Tags ===<br />
<br />
alsroot taught me about another git feature: tags<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== What Pull Does ===<br />
<br />
bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/project.git master<br />
<br />
[[Category:Activity Team]]<br />
[[Category:HowTo]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&diff=93832Activity Team/Git Tutorial2014-12-02T21:41:25Z<p>Ignacio Rodríguez: /* Create SSH Key on GNU/Linux */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
<br />
<br />
== GitHub ==<br />
<br />
Sugar Labs uses GitHub as its primary server for git repositories. While you are welcome to use other servers, it is on GitHub where you will find the master branches of the core modules and core activities.<br />
<br />
Getting started with GitHub<br />
<br />
You will learn to do the following:<br />
* Create an account, which you do once.<br />
* Create and add an SSH key, which you do once or if you change system.<br />
* Create a project, a local repository, and identify yourself to git, which you do once per project.<br />
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.<br />
<br />
=== Create an Account ===<br />
<br />
Create an account [https://github.com/join here]<br />
<br />
=== Create SSH Key on Windows ===<br />
<br />
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].<br />
<br />
* Run the puttygen.exe utility to generate a pair of private/public keys.<br />
* Click on the ''Generate'' button (Make sure SSH-2 RSA parameter is checked)<br />
* Move the mouse around to generate your key.<br />
* Once you have accumulated enough "heat", the application will generate your key pair.<br />
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.<br />
* Click on the Save private key button to save your private key in a file.<br />
<br />
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.<br />
This key can now be used on GitHub to access Git on Windows. Good luck!<br />
<br />
=== Create SSH Key on GNU/Linux ===<br />
<br />
Skip this section if you already have an SSH key in <tt>.ssh</tt> directory that you trust.<br />
<br />
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)<br />
<br />
To create a key use ''ssh-keygen''. The following command will create a “dsa” key:<br />
ssh-keygen -t dsa<br />
<br />
For creating a “rsa” key use:<br />
ssh-keygen -t rsa<br />
<br />
The key will be stored as two files in the hidden <tt>.ssh</tt> directory.<br />
<br />
<tt>id_dsa.pub</tt> is your public key. <tt>id_dsa</tt> is your private key. Only you should have access to this private key. Access to the key will grant access to GitHub in your name. For example, here is a list of files in the <tt>.ssh</tt> directory of user strom:<br />
ls -al ~/.ssh<br />
-rw------- 1 strom strom 668 2009-12-17 21:51 id_dsa<br />
-rw-r--r-- 1 strom strom 603 2009-12-17 21:51 id_dsa.pub<br />
<br />
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised. If you do it again, you must also add the new key to GitHub as described in the next section.<br />
<br />
=== Setup Git for Windows 8 ===<br />
<br />
GitHub is one way you can set up Git on Windows 8. It can be downloaded from [http://github-windows.s3.amazonaws.com/GitHubSetup.exe here]<br />
<br />
Once downloaded and installed, Git Shell can be used to execute Git commands.<br />
<br />
The commands remain the same as below. <br />
After installing GitHub, a user can use the Gitorious repository links to clone and perform other tasks.<br />
<br />
=== Add SSH Key ===<br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on 'Add Ssh Key'. Choose a title. Open your public key in a text editor, web browser, or even ''cat'' command, and then copy and paste the key into the text entry field. Click on ''Save''.<br />
<br />
Once you do this, Gitorious trusts SSH connection from your system because your system has the private key, and Gitorious has the public key. You should only need to do this once, unless you change to another system.<br />
<br />
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in <tt>~/.ssh/id_rsa.pub</tt> or <tt>~/.ssh/id_dsa.pub</tt>.)<br />
<br />
=== Create a Project === <br />
<br />
Log in to Gitorious at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.<br />
<br />
=== Create Local Repository ===<br />
<br />
Clone it from Gitorious:<br />
git clone git@github.com:username/${SLUG}.git ${SLUG}.git<br />
<br />
Replace ''${SLUG}'' with your project slug value.<br />
<br />
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs. You should only need to do this once for each project and system. You can do it again if you need a fresh copy that has no changes.<br />
<br />
=== Identify Yourself to Git ===<br />
<br />
Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.<br />
<br />
If you do not use git on your system for any other project, you can configure git:<br />
<br />
git config -f ~/.gitconfig user.email <email-you-used-for-registering-project><br />
git config -f ~/.gitconfig user.name <your-name><br />
<br />
You should only need to do this once on a system.<br />
<br />
Otherwise, configure git in the repository:<br />
<br />
cd ${SLUG}.git<br />
git config user.email <email-you-used-for-registering-project><br />
git config user.name <your-name><br />
<br />
You should only need to do this once in a repository.<br />
<br />
=== Develop ===<br />
<br />
Use a text editor or integrated development environment to create new source files or change existing files. Test the results by running the activity. Do this from your local repository, or from elsewhere - then copy your files to the repository. Repeat until you are satisfied with the changes you made.<br />
<br />
<br />
=== Commit Changes ===<br />
<br />
In your local repository, find out from git what files you changed:<br />
git status<br />
<br />
Add any files that are new or changed:<br />
git add ...<br />
<br />
Tell git to collect the changes into a commit:<br />
git commit<br />
<br />
You should do this for every meaningful set of changes you make.<br />
<br />
''Note'' <code> git commit </code> ''commits your changes to your local repository only.''<br />
<br />
=== Request Review ===<br />
<br />
Before you publish changes widely, you can ask others to review your work and comment on it.<br />
<br />
git format-patch -1<br />
<br />
or<br />
<br />
git send-email<br />
<br />
You may do this for every set of changes you make.<br />
<br />
<br />
=== Push Changes ===<br />
<br />
Your changes have to be pushed from your local repository to the repository at git.sugarlabs.org so that others can see them there.<br />
<br />
git push<br />
<br />
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.<br />
<br />
<br />
=== Pull Changes ===<br />
<br />
Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.<br />
<br />
Use<br />
git pull<br />
<br />
Also, run<br />
python setup.py fix_manifest<br />
to update the .mo files after updating the .po files<br />
<br />
You should do ''git pull'' frequently; before starting development, before pushing changes, and when you see other developers commit changes.<br />
<br />
== Other Notes ==<br />
<br />
=== Tags ===<br />
<br />
alsroot taught me about another git feature: tags<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== What Pull Does ===<br />
<br />
bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/project.git master<br />
<br />
[[Category:Activity Team]]<br />
[[Category:HowTo]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&diff=93831Activity Team/Git Tutorial2014-12-02T21:41:04Z<p>Ignacio Rodríguez: /* Create SSH Key on GNU/Linux */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
<br />
<br />
== GitHub ==<br />
<br />
Sugar Labs uses GitHub as its primary server for git repositories. While you are welcome to use other servers, it is on GitHub where you will find the master branches of the core modules and core activities.<br />
<br />
Getting started with GitHub<br />
<br />
You will learn to do the following:<br />
* Create an account, which you do once.<br />
* Create and add an SSH key, which you do once or if you change system.<br />
* Create a project, a local repository, and identify yourself to git, which you do once per project.<br />
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.<br />
<br />
=== Create an Account ===<br />
<br />
Create an account [https://github.com/join here]<br />
<br />
=== Create SSH Key on Windows ===<br />
<br />
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].<br />
<br />
* Run the puttygen.exe utility to generate a pair of private/public keys.<br />
* Click on the ''Generate'' button (Make sure SSH-2 RSA parameter is checked)<br />
* Move the mouse around to generate your key.<br />
* Once you have accumulated enough "heat", the application will generate your key pair.<br />
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.<br />
* Click on the Save private key button to save your private key in a file.<br />
<br />
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.<br />
This key can now be used on GitHub to access Git on Windows. Good luck!<br />
<br />
=== Create SSH Key on GNU/Linux ===<br />
<br />
Skip this section if you already have an SSH key in <tt>.ssh</tt> directory that you trust.<br />
<br />
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)<br />
<br />
To create a key use ''ssh-keygen''. The following command will create a “dsa” key:<br />
ssh-keygen -t dsa<br />
<br />
For creating a “rsa” key use:<br />
ssh-keygen -t rsa<br />
<br />
The key will be stored as two files in the hidden <tt>.ssh</tt> directory.<br />
<br />
<tt>id_dsa.pub</tt> is your public key. <tt>id_dsa</tt> is your private key. Only you should have access to this private key. Access to the key will grant access to GitHub in your name. For example, here is a list of files in the <tt>.ssh</tt> directory of user strom:<br />
ls -al ~/.ssh<br />
-rw------- 1 strom strom 668 2009-12-17 21:51 id_dsa<br />
-rw-r--r-- 1 strom strom 603 2009-12-17 21:51 id_dsa.pub<br />
<br />
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised. If you do it again, you must also add the new key to Gitorious as described in the next section.<br />
<br />
=== Setup Git for Windows 8 ===<br />
<br />
GitHub is one way you can set up Git on Windows 8. It can be downloaded from [http://github-windows.s3.amazonaws.com/GitHubSetup.exe here]<br />
<br />
Once downloaded and installed, Git Shell can be used to execute Git commands.<br />
<br />
The commands remain the same as below. <br />
After installing GitHub, a user can use the Gitorious repository links to clone and perform other tasks.<br />
<br />
=== Add SSH Key ===<br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on 'Add Ssh Key'. Choose a title. Open your public key in a text editor, web browser, or even ''cat'' command, and then copy and paste the key into the text entry field. Click on ''Save''.<br />
<br />
Once you do this, Gitorious trusts SSH connection from your system because your system has the private key, and Gitorious has the public key. You should only need to do this once, unless you change to another system.<br />
<br />
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in <tt>~/.ssh/id_rsa.pub</tt> or <tt>~/.ssh/id_dsa.pub</tt>.)<br />
<br />
=== Create a Project === <br />
<br />
Log in to Gitorious at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.<br />
<br />
=== Create Local Repository ===<br />
<br />
Clone it from Gitorious:<br />
git clone git@github.com:username/${SLUG}.git ${SLUG}.git<br />
<br />
Replace ''${SLUG}'' with your project slug value.<br />
<br />
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs. You should only need to do this once for each project and system. You can do it again if you need a fresh copy that has no changes.<br />
<br />
=== Identify Yourself to Git ===<br />
<br />
Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.<br />
<br />
If you do not use git on your system for any other project, you can configure git:<br />
<br />
git config -f ~/.gitconfig user.email <email-you-used-for-registering-project><br />
git config -f ~/.gitconfig user.name <your-name><br />
<br />
You should only need to do this once on a system.<br />
<br />
Otherwise, configure git in the repository:<br />
<br />
cd ${SLUG}.git<br />
git config user.email <email-you-used-for-registering-project><br />
git config user.name <your-name><br />
<br />
You should only need to do this once in a repository.<br />
<br />
=== Develop ===<br />
<br />
Use a text editor or integrated development environment to create new source files or change existing files. Test the results by running the activity. Do this from your local repository, or from elsewhere - then copy your files to the repository. Repeat until you are satisfied with the changes you made.<br />
<br />
<br />
=== Commit Changes ===<br />
<br />
In your local repository, find out from git what files you changed:<br />
git status<br />
<br />
Add any files that are new or changed:<br />
git add ...<br />
<br />
Tell git to collect the changes into a commit:<br />
git commit<br />
<br />
You should do this for every meaningful set of changes you make.<br />
<br />
''Note'' <code> git commit </code> ''commits your changes to your local repository only.''<br />
<br />
=== Request Review ===<br />
<br />
Before you publish changes widely, you can ask others to review your work and comment on it.<br />
<br />
git format-patch -1<br />
<br />
or<br />
<br />
git send-email<br />
<br />
You may do this for every set of changes you make.<br />
<br />
<br />
=== Push Changes ===<br />
<br />
Your changes have to be pushed from your local repository to the repository at git.sugarlabs.org so that others can see them there.<br />
<br />
git push<br />
<br />
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.<br />
<br />
<br />
=== Pull Changes ===<br />
<br />
Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.<br />
<br />
Use<br />
git pull<br />
<br />
Also, run<br />
python setup.py fix_manifest<br />
to update the .mo files after updating the .po files<br />
<br />
You should do ''git pull'' frequently; before starting development, before pushing changes, and when you see other developers commit changes.<br />
<br />
== Other Notes ==<br />
<br />
=== Tags ===<br />
<br />
alsroot taught me about another git feature: tags<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== What Pull Does ===<br />
<br />
bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/project.git master<br />
<br />
[[Category:Activity Team]]<br />
[[Category:HowTo]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&diff=93830Activity Team/Git Tutorial2014-12-02T21:40:40Z<p>Ignacio Rodríguez: /* Create SSH Key on Windows */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
<br />
<br />
== GitHub ==<br />
<br />
Sugar Labs uses GitHub as its primary server for git repositories. While you are welcome to use other servers, it is on GitHub where you will find the master branches of the core modules and core activities.<br />
<br />
Getting started with GitHub<br />
<br />
You will learn to do the following:<br />
* Create an account, which you do once.<br />
* Create and add an SSH key, which you do once or if you change system.<br />
* Create a project, a local repository, and identify yourself to git, which you do once per project.<br />
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.<br />
<br />
=== Create an Account ===<br />
<br />
Create an account [https://github.com/join here]<br />
<br />
=== Create SSH Key on Windows ===<br />
<br />
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].<br />
<br />
* Run the puttygen.exe utility to generate a pair of private/public keys.<br />
* Click on the ''Generate'' button (Make sure SSH-2 RSA parameter is checked)<br />
* Move the mouse around to generate your key.<br />
* Once you have accumulated enough "heat", the application will generate your key pair.<br />
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.<br />
* Click on the Save private key button to save your private key in a file.<br />
<br />
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.<br />
This key can now be used on GitHub to access Git on Windows. Good luck!<br />
<br />
=== Create SSH Key on GNU/Linux ===<br />
<br />
Skip this section if you already have an SSH key in <tt>.ssh</tt> directory that you trust.<br />
<br />
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)<br />
<br />
To create a key use ''ssh-keygen''. The following command will create a “dsa” key:<br />
ssh-keygen -t dsa<br />
<br />
For creating a “rsa” key use:<br />
ssh-keygen -t rsa<br />
<br />
The key will be stored as two files in the hidden <tt>.ssh</tt> directory.<br />
<br />
<tt>id_dsa.pub</tt> is your public key. <tt>id_dsa</tt> is your private key. Only you should have access to this private key. Access to the key will grant access to Gitorious in your name. For example, here is a list of files in the <tt>.ssh</tt> directory of user strom:<br />
ls -al ~/.ssh<br />
-rw------- 1 strom strom 668 2009-12-17 21:51 id_dsa<br />
-rw-r--r-- 1 strom strom 603 2009-12-17 21:51 id_dsa.pub<br />
<br />
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised. If you do it again, you must also add the new key to Gitorious as described in the next section.<br />
<br />
=== Setup Git for Windows 8 ===<br />
<br />
GitHub is one way you can set up Git on Windows 8. It can be downloaded from [http://github-windows.s3.amazonaws.com/GitHubSetup.exe here]<br />
<br />
Once downloaded and installed, Git Shell can be used to execute Git commands.<br />
<br />
The commands remain the same as below. <br />
After installing GitHub, a user can use the Gitorious repository links to clone and perform other tasks.<br />
<br />
=== Add SSH Key ===<br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on 'Add Ssh Key'. Choose a title. Open your public key in a text editor, web browser, or even ''cat'' command, and then copy and paste the key into the text entry field. Click on ''Save''.<br />
<br />
Once you do this, Gitorious trusts SSH connection from your system because your system has the private key, and Gitorious has the public key. You should only need to do this once, unless you change to another system.<br />
<br />
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in <tt>~/.ssh/id_rsa.pub</tt> or <tt>~/.ssh/id_dsa.pub</tt>.)<br />
<br />
=== Create a Project === <br />
<br />
Log in to Gitorious at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.<br />
<br />
=== Create Local Repository ===<br />
<br />
Clone it from Gitorious:<br />
git clone git@github.com:username/${SLUG}.git ${SLUG}.git<br />
<br />
Replace ''${SLUG}'' with your project slug value.<br />
<br />
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs. You should only need to do this once for each project and system. You can do it again if you need a fresh copy that has no changes.<br />
<br />
=== Identify Yourself to Git ===<br />
<br />
Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.<br />
<br />
If you do not use git on your system for any other project, you can configure git:<br />
<br />
git config -f ~/.gitconfig user.email <email-you-used-for-registering-project><br />
git config -f ~/.gitconfig user.name <your-name><br />
<br />
You should only need to do this once on a system.<br />
<br />
Otherwise, configure git in the repository:<br />
<br />
cd ${SLUG}.git<br />
git config user.email <email-you-used-for-registering-project><br />
git config user.name <your-name><br />
<br />
You should only need to do this once in a repository.<br />
<br />
=== Develop ===<br />
<br />
Use a text editor or integrated development environment to create new source files or change existing files. Test the results by running the activity. Do this from your local repository, or from elsewhere - then copy your files to the repository. Repeat until you are satisfied with the changes you made.<br />
<br />
<br />
=== Commit Changes ===<br />
<br />
In your local repository, find out from git what files you changed:<br />
git status<br />
<br />
Add any files that are new or changed:<br />
git add ...<br />
<br />
Tell git to collect the changes into a commit:<br />
git commit<br />
<br />
You should do this for every meaningful set of changes you make.<br />
<br />
''Note'' <code> git commit </code> ''commits your changes to your local repository only.''<br />
<br />
=== Request Review ===<br />
<br />
Before you publish changes widely, you can ask others to review your work and comment on it.<br />
<br />
git format-patch -1<br />
<br />
or<br />
<br />
git send-email<br />
<br />
You may do this for every set of changes you make.<br />
<br />
<br />
=== Push Changes ===<br />
<br />
Your changes have to be pushed from your local repository to the repository at git.sugarlabs.org so that others can see them there.<br />
<br />
git push<br />
<br />
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.<br />
<br />
<br />
=== Pull Changes ===<br />
<br />
Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.<br />
<br />
Use<br />
git pull<br />
<br />
Also, run<br />
python setup.py fix_manifest<br />
to update the .mo files after updating the .po files<br />
<br />
You should do ''git pull'' frequently; before starting development, before pushing changes, and when you see other developers commit changes.<br />
<br />
== Other Notes ==<br />
<br />
=== Tags ===<br />
<br />
alsroot taught me about another git feature: tags<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== What Pull Does ===<br />
<br />
bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/project.git master<br />
<br />
[[Category:Activity Team]]<br />
[[Category:HowTo]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93827Activity Team/Git FAQ2014-12-02T21:34:20Z<p>Ignacio Rodríguez: /* Internationalization work flow */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using github (github.com)==<br />
=== Help! I suddenly can't connect to GitHub! ===<br />
:Please contact to [https://github.com/contact github support], or look at [https://help.github.com/ GitHub FAQ]<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.png|Click on the Pull Request button<br />
Merge-Step2.png|You will get something like that.<br />
Merge-Step3.png|If you used another branch for changes, just change it in the image<br />
Merge-Step4.png|Click on Create Pull request<br />
Merge-Step5.png|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on github, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to github?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Github from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
<big>NOTE:<br>THIS IS FOR GITORIOUS ONLY, NOT APPLY FOR GITHUB</big><br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in GitHub? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93826Activity Team/Git FAQ2014-12-02T21:33:27Z<p>Ignacio Rodríguez: /* How do I send a patch to a maintainer? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using github (github.com)==<br />
=== Help! I suddenly can't connect to GitHub! ===<br />
:Please contact to [https://github.com/contact github support], or look at [https://help.github.com/ GitHub FAQ]<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.png|Click on the Pull Request button<br />
Merge-Step2.png|You will get something like that.<br />
Merge-Step3.png|If you used another branch for changes, just change it in the image<br />
Merge-Step4.png|Click on Create Pull request<br />
Merge-Step5.png|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on github, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to github?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Github from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in GitHub? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93825Activity Team/Git FAQ2014-12-02T21:32:45Z<p>Ignacio Rodríguez: /* What is the difference between a branch and a repository? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using github (github.com)==<br />
=== Help! I suddenly can't connect to GitHub! ===<br />
:Please contact to [https://github.com/contact github support], or look at [https://help.github.com/ GitHub FAQ]<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.png|Click on the Pull Request button<br />
Merge-Step2.png|You will get something like that.<br />
Merge-Step3.png|If you used another branch for changes, just change it in the image<br />
Merge-Step4.png|Click on Create Pull request<br />
Merge-Step5.png|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on github, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to github?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in GitHub? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93824Activity Team/Git FAQ2014-12-02T21:32:25Z<p>Ignacio Rodríguez: /* How do I update the Tag field in Gitorious? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using github (github.com)==<br />
=== Help! I suddenly can't connect to GitHub! ===<br />
:Please contact to [https://github.com/contact github support], or look at [https://help.github.com/ GitHub FAQ]<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.png|Click on the Pull Request button<br />
Merge-Step2.png|You will get something like that.<br />
Merge-Step3.png|If you used another branch for changes, just change it in the image<br />
Merge-Step4.png|Click on Create Pull request<br />
Merge-Step5.png|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to github?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in GitHub? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93823Activity Team/Git FAQ2014-12-02T21:32:06Z<p>Ignacio Rodríguez: /* How do I push my branch to gitorious? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using github (github.com)==<br />
=== Help! I suddenly can't connect to GitHub! ===<br />
:Please contact to [https://github.com/contact github support], or look at [https://help.github.com/ GitHub FAQ]<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.png|Click on the Pull Request button<br />
Merge-Step2.png|You will get something like that.<br />
Merge-Step3.png|If you used another branch for changes, just change it in the image<br />
Merge-Step4.png|Click on Create Pull request<br />
Merge-Step5.png|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to github?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93822Activity Team/Git FAQ2014-12-02T21:30:51Z<p>Ignacio Rodríguez: /* Help! I suddenly can't connect to GitHub! */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using github (github.com)==<br />
=== Help! I suddenly can't connect to GitHub! ===<br />
:Please contact to [https://github.com/contact github support], or look at [https://help.github.com/ GitHub FAQ]<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.png|Click on the Pull Request button<br />
Merge-Step2.png|You will get something like that.<br />
Merge-Step3.png|If you used another branch for changes, just change it in the image<br />
Merge-Step4.png|Click on Create Pull request<br />
Merge-Step5.png|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93821Activity Team/Git FAQ2014-12-02T21:26:43Z<p>Ignacio Rodríguez: /* Using gitorious (git.sugarlabs.org) */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using github (github.com)==<br />
=== Help! I suddenly can't connect to GitHub! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.png|Click on the Pull Request button<br />
Merge-Step2.png|You will get something like that.<br />
Merge-Step3.png|If you used another branch for changes, just change it in the image<br />
Merge-Step4.png|Click on Create Pull request<br />
Merge-Step5.png|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93820Activity Team/Git FAQ2014-12-02T21:26:27Z<p>Ignacio Rodríguez: /* Help! I suddenly can't connect to Gitorious! */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to GitHub! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.png|Click on the Pull Request button<br />
Merge-Step2.png|You will get something like that.<br />
Merge-Step3.png|If you used another branch for changes, just change it in the image<br />
Merge-Step4.png|Click on Create Pull request<br />
Merge-Step5.png|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93819Activity Team/Git FAQ2014-12-02T21:25:00Z<p>Ignacio Rodríguez: /* How do I request a merge? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.png|Click on the Pull Request button<br />
Merge-Step2.png|You will get something like that.<br />
Merge-Step3.png|If you used another branch for changes, just change it in the image<br />
Merge-Step4.png|Click on Create Pull request<br />
Merge-Step5.png|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=File:Merge-Step5.png&diff=93818File:Merge-Step5.png2014-12-02T21:23:12Z<p>Ignacio Rodríguez: </p>
<hr />
<div></div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=File:Merge-Step4.png&diff=93817File:Merge-Step4.png2014-12-02T21:22:54Z<p>Ignacio Rodríguez: </p>
<hr />
<div></div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=File:Merge-Step3.png&diff=93816File:Merge-Step3.png2014-12-02T21:22:20Z<p>Ignacio Rodríguez: </p>
<hr />
<div></div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=File:Merge-Step2.png&diff=93815File:Merge-Step2.png2014-12-02T21:22:08Z<p>Ignacio Rodríguez: </p>
<hr />
<div></div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=File:Merge-Step1.png&diff=93814File:Merge-Step1.png2014-12-02T21:21:48Z<p>Ignacio Rodríguez: </p>
<hr />
<div></div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93813Activity Team/Git FAQ2014-12-02T21:21:20Z<p>Ignacio Rodríguez: /* How do I request a merge? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Go to your GitHub fork page and follow the steps of the images<br />
<gallery><br />
Merge-Step1.jpg|Click on the Pull Request button<br />
Merge-Step2.jpg|You will get something like that.<br />
Merge-Step3.jpg|If you used another branch for changes, just change it in the image<br />
Merge-Step4.jpg|Click on Create Pull request<br />
Merge-Step5.jpg|Edit the title/description of the pull request, and click on Create pull request. Now the commiter will review it<br />
</gallery><br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93812Activity Team/Git FAQ2014-12-02T20:55:33Z<p>Ignacio Rodríguez: /* How do I add an additional committer to my project? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Go to: <nowiki>https://github.com/ignaciouy/PROJECTNAME/settings/collaboration</nowiki> . Type a username in the box and click "add collaborator"<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Request merge".<br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git&diff=93811Activity Team/Git2014-12-02T20:50:02Z<p>Ignacio Rodríguez: /* Additional background on Git and Gitorious */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}[[Category:Activity Team]]</noinclude><br />
====<includeonly>Additional background on </includeonly> GitHub ====<br />
* [[Activity Team/Git Introduction|Introduction]]<br />
* [[Activity Team/Git Tutorial|Tutorial]]<br />
* [[Activity Team/Git FAQ|Sugar Labs git FAQ]]<br />
* [[Activity Team/Git Migration|Migration]]<br />
* [[olpc:Git | Git at One Laptop per Child]]<br />
<br />
<br />
* An alternate, [http://cgit.sugarlabs.org cgit.sugarlabs.org] web interface to [http://git.sugarlabs.org/ git.sugarlabs.org]rg]<br />
<br />
<br />
* James Simmons' book [http://objavi.flossmanuals.net/books/ActivitiesGuideSugar-en-2010.08.30-15.48.49.pdf "Make Your Own Sugar Activities!"] chapter 11 explains Git for activity developers, it is highly recommended for intermediate and advanced users<br />
* Anish Mangal explains the [http://lists.sugarlabs.org/archive/sugar-devel/2010-October/027633.html git workflow] on the Sugar development mailing list<br />
<br />
<br />
* [http://gitlog.wordpress.com/2011/01/16/git-top-links-2010-1-2/ git top links: 2010-1]<br />
* [http://book.git-scm.com/ Git Community Book]<br />
* John Wiegley has written an overview of git: [http://ftp.newartisans.com/pub/git.from.bottom.up.pdf Git from the bottom up]<br />
* Charles Duran from Harvard has written a lovely overview of git at [http://www.eecs.harvard.edu/~cduan/technical/git/ Understanding Git Conceptually]<br />
* GNOME maintains a [http://www.gnome.org/~federico/misc/git-cheat-sheet.txt list of references to git for mortals]<br />
* [http://gitready.com/ Learn Git One Commit at a Time]<br />
* [http://progit.org/book/ Pro Git] by Scott Chacon,<br />
* [http://www.gitcasts.com/ Gitcasts].<br />
* [http://andyjeffries.co.uk/articles/25-tips-for-intermediate-git-users 25 Git Tips]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team&diff=93810Activity Team2014-12-02T20:49:18Z<p>Ignacio Rodríguez: /* Move an activity */</p>
<hr />
<div><noinclude><div class="noprint">{{TeamHeader|Activity Team}}</div></noinclude><br />
<br />
==Mission==<br />
<br />
{{:Activity Team/Mission}}<br />
<br />
==Tips for Activity Developers==<br />
<br />
=== Ask your 'newbie' question on-line ===<br />
<br />
Join [http://en.wikipedia.org/wiki/IRC IRC] channel [irc://irc.freenode.net/sugar #sugar] (e.g. via [http://webchat.freenode.net/?randomnick=1&prompt=1&channels=sugar web client]) and ask your question about activity, or sugar core, development process. Also browse chat [http://meeting.sugarlabs.org/sugar logs].<br />
<br />
=== Creating a new activity ===<br />
<br />
See [[Activity Team/Creating a New Activity|Creating a New Activity]] and [[Activity Team/Resources|Activity Team Resources]].<br />
<br />
=== Automated Testing ===<br />
<br />
See [[Automated Activity Testing]]<br />
<br />
===Port to GTK3===<br />
<br />
We have hints on [[Features/GTK3/Porting|porting from GTK2 to GTK3]].<br />
<br />
===Move an activity===<br />
<br />
We need help moving activities over to Sugar Labs from GitHub servers. This is a great way to get started helping out the Activity Team. See [[Activity Team/How to migrate from Gitorious]] for instructions, and [[Activity Team/Activity Status]] for the list of activities that need to be moved.<br />
<br />
While moving activities, it would be great to check that the .pot files are up to date and the MANIFEST is correct. This will really help out the distro packagers.<br />
<br />
== Set up Sugar Labs services ==<br />
* '''Upload a xo bundle''' to [http://activities.sugarlabs.org/ activities.sugarlabs.org]. Be sure to include a couple of screenshots of your activity in action.<br />
* If your activity is part of Fructose, '''upload a .tar.bz2''' to [http://download.sugarlabs.org/ download.sugarlabs.org]. Request a shell account from the [[Infrastructure Team]] if you don't have one already.<br />
* '''Update the OLPC wiki page''' for the Activity, noting the migration. Use the [http://wiki.laptop.org/go/Template:Migrated_to_sl.o Migrated to sl.o] template.<br />
* '''Change sugar-jhbuild''' to point to the new repository if this activity was included in sugar-jhbuild (enter a ticket in http://dev.sugarlabs.org if you have no access).<br />
* Ask an [[Activity Team/Contacts|Activity Team Coordinator]] to create a '''Trac component''' for your activity.<br />
<br />
===Cross-platform compatibility===<br />
<br />
As Sugar is integrated into more distros and the hardware base expands, it is important to keep Activity developers informed of any issues they need be aware of. For example, when Sugar was only expected to run on the XO-1 laptop, it was safe to assume that the display was always 1200x900. <br />
<br />
The [[Activity Team/Compatibility Tips|Compatibility Tips]] page is a place to accumulate tips.<br />
<br />
===Migrating from GTK2 to GTK3===<br />
<br />
The Sugar platform is migrating from GTK2 to GTK3 to stay relevant with upstream changes and benefit from their efforts. Sugar 0.96 (available in OLPC 12.1 development builds) includes support for a transition period, where both GTK2 and GTK3 activities can coexists, but new Sugar features will only be added to the GTK3 toolkit (e.g., improvements in touchscreen support). Have a read through the [[Features/GTK3/Porting|migration notes]], and the [http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html GTK3 Python tutorials] to get a feel for how things need to be changed. New activities should be developed with GTK3, unless you need to support an existing deployment today using an older build.<br />
<br />
===Modify Activities===<br />
<br />
A guide has been written describing how to make simple modifications to popular Sugar activities. Examples include adding sounds to TamTam, blocks to TurtleArt, buttons to Calculate, etc.<br />
<br />
* [[Activity Team/Modifying an Activity]]<br />
<br />
===Remote control your XO===<br />
<br />
[[Activity Team/Remote control your XO|Remote control your XO]] from your development machine can be handy while developing an activity.<br />
<br />
===Internationalization===<br />
<br />
We use '''[http://docs.python.org/library/gettext.html gettext]''' to internationalize activities. The basic steps are:<br />
<br />
In your Python code:<br />
from gettext import gettext as _<br />
<br />
Hence forth, encapsulate strings that you want translated in _():<br />
_('string to be translated')<br />
<br />
Run <code>setup.py</code> to generate a POT file for your project. This file will contain a reference to all of the encapsulated strings.<br />
<br />
From here, you need to:<br />
# <code>git add</code>, <code>commit</code>, and <code>push</code> the POT file to git<br />
# request that your project be added to the pootle server (by filing a task to the localization component on bugs.sugarlabs.org)<br />
# add pootle as a committer to your project on gitorious<br />
<br />
Once translations are committed to your project:<br />
# do a <code>git pull</code> to get a local copy of the .po files<br />
# run <code>setup.py fix_manifest</code> to create the .mo files used at run time<br />
Details can be found on the [[Translation Team/i18n Best Practices]] page.<br />
<br />
===General overview of git===<br />
<br />
Read the brief overview below but then '''start''' with our <br />
* [[Activity Team/Git Tutorial|git tutorial]].<br />
<br />
====glossary====<br />
<br />
;VCS: Version Control System &mdash; keeps track of changes to a set of files.<br />
;git: the distributed VCS used by Sugar Labs<br />
;commit: set of changes to files tracked by a VCS, accompanied by metadata (author, description, etc.)<br />
;diff/patch: (usually textual) representation of changes. These are also the names of specific tools used to create/apply these representations of changes.<br />
;repository: storage place for commits, usually of a certain piece of software<br />
;gitorious: software for hosting git repositories, including a web interface for administration<br />
;git.sugarlabs.org: server hosted by Sugar Labs running gitorious<br />
;GitHub: a web-based hosting service Git repository. Sugar Labs is migrating projects to this service.<br />
<br />
====Setup====<br />
(Once per machine you're working on)<br />
git clone git://github.com/whatever/mainline.git whatever<br />
<br />
====Regular usage====<br />
cd whatever<br />
[hack away and test your changes]<br />
git diff<br />
[review your changes, go back to hacking if you notice a mistake]<br />
git status<br />
git add NameOfNewFile # if you created any file you want included<br />
git commit -a<br />
[describe your changes - by convention the first line is a summary and the remaining lines are long description]<br />
[start again at hacking if you're offline]<br />
git log origin/master..master # shows you all commits not pushed yet<br />
git push # if/once you are online<br />
<br />
Git offers a lot more commands and features that can make your life<br />
easier, but it's best to start off small and use only those mentioned<br />
above. It's very easy to get confused if you're unfamiliar with git.<br />
<br />
Even if you use the more advanced features, git does a pretty good job at<br />
allowing you to recover from your mistakes.<br />
So if you ever mess up and don't know how to fix it yourself, please<br />
stop (at least for me that's usually the hardest part ;) ), try to<br />
recollect the exact sequence of actions (e.g., from shell history) and ask<br />
for help.<br />
<br />
----<br />
<br />
Once you have [[Activity Team/How_to_migrate_from_OLPC|migrated]] your project, you may have some more detailed [[Activity Team/Git FAQ|questions regarding how Sugar Labs uses git]], particularly in regard to patch management.<br />
<br />
----<br />
<br />
{{:Activity Team/Git}}<br />
<br />
== Maintainers ==<br />
<br />
{{:Activity Team/Maintainers}}<br />
<br />
== Testers ==<br />
<br />
Please see the [[Features/Soas_V4/ASLOxo_Activity_Test_Table|Activity Test-table page]] for tester information.<br />
<br />
== Background information ==<br />
<br />
=== Sugar Activities ===<br />
<br />
There is an [[Activities]] page where we highlight Sugar activities in the wiki. (We need to discuss how best to manage the content of this page as well as how to manage the activity-specific sub-pages.)<br />
<br />
===Sugar [[Human Interface Guidelines]]===<br />
<br />
The [[Human_Interface_Guidelines|Sugar Human Interface Guidelines]] content has also been migrated to Sugar Labs. This guide is a critical resource when designing activities. <br />
: An [[Activity Team/Project Ideas#Activity HIG|Activity HIG]] discussion<br />
<br />
===Sugar Almanac===<br />
<br />
The [[Development Team/Almanac|Sugar Almanac]] content has been migrated to Sugar Labs. It's a great, quick reference when building python Activities.<br />
<br />
===activities.sugarlabs.org===<br />
<br />
The [http://activities.sugarlabs.org Sugar Activity Library] is our user-facing portal for Sugar activities. The site uses the back-end Mozilla built for Firefox and Thunderbird extensions at addons.mozilla.org, called Remora. To help out, check out [[Activity Library]].<br />
<br />
===sugar-widgets library===<br />
<br />
See [[Development Team/sugar-port]].<br />
<br />
===sugar-sprites library===<br />
<br />
See [[Activity Team/Sugar-sprites]]<br />
<br />
== Misc. ==<br />
<br />
===Mime types and file suffixes===<br />
<br />
You can associate your activity with mime types by including a mime_types entry in the activity/activity.info file; e.g.,<br />
<br />
mime_types = text/plain;text/x-python;text/x-logo;text/x-svg;application/xml;text/html;text/xml;image/svg+xml<br />
<br />
You can associate your activity with a file suffix by including a mimetypes.xml file in your activity subdirectory:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"><br />
<mime-type type="application/x-turtle-art"><br />
<comment xml:lang="en">Turtle Art</comment><br />
<glob pattern="*.ta"/><br />
</mime-type><br />
</mime-info><br />
<br />
'''Note:''' You cannot just copy your activity into the ~/Activities directory. You have to install it as a .xo bundle or using 'setup.py install' (note that the latter is tricky as the command might get your paths messed up). This installation step will create a file --> ~/.local/share/mime/packages/<your-bundle_id>.xml<br />
<br />
If your activity does not register any mimetype, then it won't matter.<br />
<br />
If your activity was already properly installed (with sugar-install-bundle), then copying new source into Activities will not be affected by this problem unless the new source registers a new mimetype that the old source did not.<br />
<br />
=== Activity Team users on activities.sugarlabs.org ===<br />
<br />
Fake emails to identify users:<br />
* ''activity.team@sugarlabs.org'' activities that are supported by Activity Team<br />
* ''trash@dev.null'' activities to remove<br />
<br />
===setup.py===<br />
<br />
There is a handy utility that is a standard part of Sugar Activity bundles, setup.py. You should use it to create and update POT files, generate a MANIFEST file and update locale files, and create .xo and .tar files for distribution.<br />
<br />
./setup.py genpot # generates or updates the POT file used by gettext for internationalization<br />
./setup.py build<br />
./setup.py fix_manifest # updates the MANIFEST file and generates or updates the locale files used for internationalization<br />
./setup.py dist_xo # creates an .xo bundle from your project<br />
./setup.py dist_source # creates a .tar.gz file from your project<br />
<br />
===Packaging activities discussion=== <br />
<br />
We are currently discussing how to package activities in the future, in order to support all distributions. Please add your comments to the following pages.<br />
* [[Activity Team/Packaging|Packaging]]<br />
** should we remove "Activities" section from that page; all issues where moved to Activity_Status page [[User:Alsroot|alsroot]] 10:33, 16 January 2009 (UTC)<br />
* [[Activity Team/Packaging Ideas|Packaging ideas]]<br />
<br />
=== The Sugar Control Panel ===<br />
<br />
While not strictly in the realm of Activities, it may be useful on occasion to add a section to the Sugar Control Panel. [[Activity Team/Control Panel|Things to keep in mind]].<br />
<br />
=== A typical update cycle ===<br />
<br />
Anyone can contribute a patch to a Sugar Activity. The typical work cycle involves an interaction with the activity (project) maintainer as follows:<br />
# make a clone (anyone)<br />
# make your changes (anyone)<br />
# mail your patch to sugar_devel (anyone)<br />
# make changes as per suggestions by the project maintainer and developer community (anyone)<br />
# push your changes (anyone)<br />
# request a merge (anyone)<br />
# write release notes (anyone)<br />
# tag the new version in git (project maintainer)<br />
# create the .xo and .tar files (project maintainer)<br />
# upload .tar to download.sugarlabs.org (project maintainer)<br />
# upload .xo to activities.sugarlabs.org (project maintainer)<br />
# update wiki documentation (anyone)<br />
<br />
=== OLPC XO game buttons ===<br />
<br />
The game buttons on the OLPC XO are accessible:<br />
* The left-side buttons map to KP_Up, KP_Right, KP_Down, and KP_Left<br />
* The right-side buttons map to KP_Page_Up (o), KP_End (✓), KP_Page_Down (×), and KP_Home (◽)<br />
<br />
=== The Sugar Object Chooser ===<br />
<br />
The Object Chooser is the activity-level user interface to the Journal. Examples and caveats are found [[Activity_Team/Object_Chooser|here]].<br />
<br />
==[[Activity Team/Project Ideas|Project Ideas]]==<br />
<br />
The Activity Team always needs project ideas and suggestions. Post your ideas to [[Activity Team/Project Ideas]]. <br />
<br />
If you see something here you would like to help with, please [[Activity Team/Contacts|contact us]].<br />
<br />
[[User:Wade|Wade]] 17:19, 13 January 2009 (UTC)<br />
<br />
==Additional resources==<br />
<br />
Additional resources may be found [[Activity_Team/Resources|here]].<br />
<br />
==Sugar Activity development courses==<br />
<br />
There are university- and secondary-school-level courses being taught around Sugar development. Several of the syllabi are on line:<br />
<br />
* http://wiki.paraguayeduca.org/index.php/Curso_Sugar_FPUNA is being adapted by UNA<br />
* http://teachingopensource.org/index.php/RIT/The_Course is being taught at RIT<br />
<br />
==Meetings==<br />
<br />
Please check [[/Meetings]] for meeting schedules/logs. <br />
<br />
== Moving to Sugar Labs ==<br />
<br />
A few notes re moving to the Sugar Labs infrastructure:<br />
<br />
* use git init to create a new project unless it already exists.<br />
* use <code>setup.py dist_source</code> to make the source package associated with your project.<br />
* source packages now go in:<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/<br />
<br />
: from there, if your project (if it is an Activity) probably belongs in the honey subdirectory, e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/honey/Abacus/<br />
<br />
: If your project is part of the Sugar core, it goes in sucrose/fructose/ (for core Activities) or sucrose/glucose (for core modules), e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/fructore/TurtleArt/<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/glucose/sugar-toolkit/<br />
<br />
* don't forget to update addons as well!!<br />
activities.sugarlabs.org<br />
<br />
* and to copy the tar file to download.sugarlabs.org<br />
download.sugarlabs.org:/download/sources/honey/...<br />
download.sugarlabs.org:/download/sources/sucrose/fructose/...<br />
<br />
== Subpages ==<br />
{{Special:PrefixIndex/{{PAGENAME}}/}}<br />
<br />
[[Category:Activity Team]]<br />
[[Category:Team]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/How_to_migrate_from_Sugar_Labs&diff=93809Activity Team/How to migrate from Sugar Labs2014-12-02T20:48:34Z<p>Ignacio Rodríguez: Ignacio Rodríguez moved page Activity Team/How to migrate from Sugar Labs to Activity Team/How to migrate from Gitorious</p>
<hr />
<div>#REDIRECT [[Activity Team/How to migrate from Gitorious]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/How_to_migrate_from_Gitorious&diff=93808Activity Team/How to migrate from Gitorious2014-12-02T20:48:34Z<p>Ignacio Rodríguez: Ignacio Rodríguez moved page Activity Team/How to migrate from Sugar Labs to Activity Team/How to migrate from Gitorious</p>
<hr />
<div>== Migrate the code ==<br />
* If you are not the author of the activity, '''query''' the author to let them know about the move.<br />
* '''Create''' an account on http://github.com and '''log in'''. Add your public SSH key to [https://github.com/settings/ssh your account].<br />
* '''Create a new project''' (http://github.com, Your repositories, New repository).<br />
* '''Clone''' your activity from [http://github.com github.com].<br />
git clone git://github.com/'''username'''/pippy.git<br />
* '''If''' you want to migrate a non-master branch...<br />
git remote show origin<br />
git checkout -b sucrose-0.82 origin/sucrose-0.82<br />
* '''Push''' to git.sugarlabs.org with something like:<br />
git push git@github.com:'''username'''/pippy.git --mirror<br />
* '''Clone''' the project from the new repository in order to be able to push your changes. You'll need to do a git clone into an empty directory, using the same URL you used with your previous push:<br />
git clone git@github.com:'''username'''/pippy.git<br />
If you're getting a message saying '''fatal: The remote end hung up unexpectedly''' that probably means that this URL is incorrect.</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&diff=93807Activity Team/Git Tutorial2014-12-02T19:45:04Z<p>Ignacio Rodríguez: /* What Pull Does */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
<br />
<br />
== Gitorious ==<br />
<br />
Getting started with GitHub<br />
<br />
You will learn to do the following:<br />
* Create an account, which you do once.<br />
* Create and add an SSH key, which you do once or if you change system.<br />
* Create a project, a local repository, and identify yourself to git, which you do once per project.<br />
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.<br />
<br />
<br />
=== Create an Account ===<br />
<br />
Create an account [https://github.com/join here]<br />
<br />
=== Create SSH Key on Windows ===<br />
<br />
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].<br />
<br />
* Run the puttygen.exe utility to generate a pair of private/public keys.<br />
* Click on the ''Generate'' button (Make sure SSH-2 RSA parameter is checked)<br />
* Move the mouse around to generate your key.<br />
* Once you have accumulated enough "heat", the application will generate your key pair.<br />
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.<br />
* Click on the Save private key button to save your private key in a file.<br />
<br />
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.<br />
This key can now be used on Gitorious to access Git on Windows. Good luck!<br />
<br />
=== Create SSH Key on GNU/Linux ===<br />
<br />
Skip this section if you already have an SSH key in <tt>.ssh</tt> directory that you trust.<br />
<br />
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)<br />
<br />
To create a key use ''ssh-keygen''. The following command will create a “dsa” key:<br />
ssh-keygen -t dsa<br />
<br />
For creating a “rsa” key use:<br />
ssh-keygen -t rsa<br />
<br />
The key will be stored as two files in the hidden <tt>.ssh</tt> directory.<br />
<br />
<tt>id_dsa.pub</tt> is your public key. <tt>id_dsa</tt> is your private key. Only you should have access to this private key. Access to the key will grant access to Gitorious in your name. For example, here is a list of files in the <tt>.ssh</tt> directory of user strom:<br />
ls -al ~/.ssh<br />
-rw------- 1 strom strom 668 2009-12-17 21:51 id_dsa<br />
-rw-r--r-- 1 strom strom 603 2009-12-17 21:51 id_dsa.pub<br />
<br />
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised. If you do it again, you must also add the new key to Gitorious as described in the next section.<br />
<br />
=== Setup Git for Windows 8 ===<br />
<br />
GitHub is one way you can set up Git on Windows 8. It can be downloaded from [http://github-windows.s3.amazonaws.com/GitHubSetup.exe here]<br />
<br />
Once downloaded and installed, Git Shell can be used to execute Git commands.<br />
<br />
The commands remain the same as below. <br />
After installing GitHub, a user can use the Gitorious repository links to clone and perform other tasks.<br />
<br />
=== Add SSH Key ===<br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on 'Add Ssh Key'. Choose a title. Open your public key in a text editor, web browser, or even ''cat'' command, and then copy and paste the key into the text entry field. Click on ''Save''.<br />
<br />
Once you do this, Gitorious trusts SSH connection from your system because your system has the private key, and Gitorious has the public key. You should only need to do this once, unless you change to another system.<br />
<br />
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in <tt>~/.ssh/id_rsa.pub</tt> or <tt>~/.ssh/id_dsa.pub</tt>.)<br />
<br />
=== Create a Project === <br />
<br />
Log in to Gitorious at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.<br />
<br />
=== Create Local Repository ===<br />
<br />
Clone it from Gitorious:<br />
git clone git@github.com:username/${SLUG}.git ${SLUG}.git<br />
<br />
Replace ''${SLUG}'' with your project slug value.<br />
<br />
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs. You should only need to do this once for each project and system. You can do it again if you need a fresh copy that has no changes.<br />
<br />
=== Identify Yourself to Git ===<br />
<br />
Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.<br />
<br />
If you do not use git on your system for any other project, you can configure git:<br />
<br />
git config -f ~/.gitconfig user.email <email-you-used-for-registering-project><br />
git config -f ~/.gitconfig user.name <your-name><br />
<br />
You should only need to do this once on a system.<br />
<br />
Otherwise, configure git in the repository:<br />
<br />
cd ${SLUG}.git<br />
git config user.email <email-you-used-for-registering-project><br />
git config user.name <your-name><br />
<br />
You should only need to do this once in a repository.<br />
<br />
=== Develop ===<br />
<br />
Use a text editor or integrated development environment to create new source files or change existing files. Test the results by running the activity. Do this from your local repository, or from elsewhere - then copy your files to the repository. Repeat until you are satisfied with the changes you made.<br />
<br />
<br />
=== Commit Changes ===<br />
<br />
In your local repository, find out from git what files you changed:<br />
git status<br />
<br />
Add any files that are new or changed:<br />
git add ...<br />
<br />
Tell git to collect the changes into a commit:<br />
git commit<br />
<br />
You should do this for every meaningful set of changes you make.<br />
<br />
''Note'' <code> git commit </code> ''commits your changes to your local repository only.''<br />
<br />
=== Request Review ===<br />
<br />
Before you publish changes widely, you can ask others to review your work and comment on it.<br />
<br />
git format-patch -1<br />
<br />
or<br />
<br />
git send-email<br />
<br />
You may do this for every set of changes you make.<br />
<br />
<br />
=== Push Changes ===<br />
<br />
Your changes have to be pushed from your local repository to the repository at git.sugarlabs.org so that others can see them there.<br />
<br />
git push<br />
<br />
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.<br />
<br />
<br />
=== Pull Changes ===<br />
<br />
Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.<br />
<br />
Use<br />
git pull<br />
<br />
Also, run<br />
python setup.py fix_manifest<br />
to update the .mo files after updating the .po files<br />
<br />
You should do ''git pull'' frequently; before starting development, before pushing changes, and when you see other developers commit changes.<br />
<br />
== Other Notes ==<br />
<br />
=== Tags ===<br />
<br />
alsroot taught me about another git feature: tags<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== What Pull Does ===<br />
<br />
bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/project.git master<br />
<br />
[[Category:Activity Team]]<br />
[[Category:HowTo]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&diff=93806Activity Team/Git Tutorial2014-12-02T19:43:39Z<p>Ignacio Rodríguez: /* Gitorious */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
<br />
<br />
== Gitorious ==<br />
<br />
Getting started with GitHub<br />
<br />
You will learn to do the following:<br />
* Create an account, which you do once.<br />
* Create and add an SSH key, which you do once or if you change system.<br />
* Create a project, a local repository, and identify yourself to git, which you do once per project.<br />
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.<br />
<br />
<br />
=== Create an Account ===<br />
<br />
Create an account [https://github.com/join here]<br />
<br />
=== Create SSH Key on Windows ===<br />
<br />
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].<br />
<br />
* Run the puttygen.exe utility to generate a pair of private/public keys.<br />
* Click on the ''Generate'' button (Make sure SSH-2 RSA parameter is checked)<br />
* Move the mouse around to generate your key.<br />
* Once you have accumulated enough "heat", the application will generate your key pair.<br />
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.<br />
* Click on the Save private key button to save your private key in a file.<br />
<br />
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.<br />
This key can now be used on Gitorious to access Git on Windows. Good luck!<br />
<br />
=== Create SSH Key on GNU/Linux ===<br />
<br />
Skip this section if you already have an SSH key in <tt>.ssh</tt> directory that you trust.<br />
<br />
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)<br />
<br />
To create a key use ''ssh-keygen''. The following command will create a “dsa” key:<br />
ssh-keygen -t dsa<br />
<br />
For creating a “rsa” key use:<br />
ssh-keygen -t rsa<br />
<br />
The key will be stored as two files in the hidden <tt>.ssh</tt> directory.<br />
<br />
<tt>id_dsa.pub</tt> is your public key. <tt>id_dsa</tt> is your private key. Only you should have access to this private key. Access to the key will grant access to Gitorious in your name. For example, here is a list of files in the <tt>.ssh</tt> directory of user strom:<br />
ls -al ~/.ssh<br />
-rw------- 1 strom strom 668 2009-12-17 21:51 id_dsa<br />
-rw-r--r-- 1 strom strom 603 2009-12-17 21:51 id_dsa.pub<br />
<br />
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised. If you do it again, you must also add the new key to Gitorious as described in the next section.<br />
<br />
=== Setup Git for Windows 8 ===<br />
<br />
GitHub is one way you can set up Git on Windows 8. It can be downloaded from [http://github-windows.s3.amazonaws.com/GitHubSetup.exe here]<br />
<br />
Once downloaded and installed, Git Shell can be used to execute Git commands.<br />
<br />
The commands remain the same as below. <br />
After installing GitHub, a user can use the Gitorious repository links to clone and perform other tasks.<br />
<br />
=== Add SSH Key ===<br />
<br />
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on 'Add Ssh Key'. Choose a title. Open your public key in a text editor, web browser, or even ''cat'' command, and then copy and paste the key into the text entry field. Click on ''Save''.<br />
<br />
Once you do this, Gitorious trusts SSH connection from your system because your system has the private key, and Gitorious has the public key. You should only need to do this once, unless you change to another system.<br />
<br />
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven't tested it. Keys should generally be located in <tt>~/.ssh/id_rsa.pub</tt> or <tt>~/.ssh/id_dsa.pub</tt>.)<br />
<br />
=== Create a Project === <br />
<br />
Log in to Gitorious at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.<br />
<br />
=== Create Local Repository ===<br />
<br />
Clone it from Gitorious:<br />
git clone git@github.com:username/${SLUG}.git ${SLUG}.git<br />
<br />
Replace ''${SLUG}'' with your project slug value.<br />
<br />
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs. You should only need to do this once for each project and system. You can do it again if you need a fresh copy that has no changes.<br />
<br />
=== Identify Yourself to Git ===<br />
<br />
Git on your local system must know your email and name. It uses this when you commit a change, so that when you push or mail it others will know who did it.<br />
<br />
If you do not use git on your system for any other project, you can configure git:<br />
<br />
git config -f ~/.gitconfig user.email <email-you-used-for-registering-project><br />
git config -f ~/.gitconfig user.name <your-name><br />
<br />
You should only need to do this once on a system.<br />
<br />
Otherwise, configure git in the repository:<br />
<br />
cd ${SLUG}.git<br />
git config user.email <email-you-used-for-registering-project><br />
git config user.name <your-name><br />
<br />
You should only need to do this once in a repository.<br />
<br />
=== Develop ===<br />
<br />
Use a text editor or integrated development environment to create new source files or change existing files. Test the results by running the activity. Do this from your local repository, or from elsewhere - then copy your files to the repository. Repeat until you are satisfied with the changes you made.<br />
<br />
<br />
=== Commit Changes ===<br />
<br />
In your local repository, find out from git what files you changed:<br />
git status<br />
<br />
Add any files that are new or changed:<br />
git add ...<br />
<br />
Tell git to collect the changes into a commit:<br />
git commit<br />
<br />
You should do this for every meaningful set of changes you make.<br />
<br />
''Note'' <code> git commit </code> ''commits your changes to your local repository only.''<br />
<br />
=== Request Review ===<br />
<br />
Before you publish changes widely, you can ask others to review your work and comment on it.<br />
<br />
git format-patch -1<br />
<br />
or<br />
<br />
git send-email<br />
<br />
You may do this for every set of changes you make.<br />
<br />
<br />
=== Push Changes ===<br />
<br />
Your changes have to be pushed from your local repository to the repository at git.sugarlabs.org so that others can see them there.<br />
<br />
git push<br />
<br />
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.<br />
<br />
<br />
=== Pull Changes ===<br />
<br />
Others, including pootle, may add changes to the repository at git.sugarlabs.org. You must merge these with your repository.<br />
<br />
Use<br />
git pull<br />
<br />
Also, run<br />
python setup.py fix_manifest<br />
to update the .mo files after updating the .po files<br />
<br />
You should do ''git pull'' frequently; before starting development, before pushing changes, and when you see other developers commit changes.<br />
<br />
== Other Notes ==<br />
<br />
=== Tags ===<br />
<br />
alsroot taught me about another git feature: tags<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== What Pull Does ===<br />
<br />
bertf explained to me that git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://git.sugarlabs.org/infoslicer/alsroots-clone.git master<br />
<br />
[[Category:Activity Team]]<br />
[[Category:HowTo]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93805Activity Team/Git FAQ2014-12-02T19:38:22Z<p>Ignacio Rodríguez: /* How do I create a fork of an existing project? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Add Committer".<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Go to project page, and click the "Fork" button in the top<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://github.com/username/yourproject.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url git@github.com:username/project.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://github.com/username/yourproject.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = git@github.com:username/yourproject.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Request merge".<br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93804Activity Team/Git FAQ2014-12-02T19:35:37Z<p>Ignacio Rodríguez: /* As a maintainer, how do I merge a patch? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Add Committer".<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Clone repository".<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://git.sugarlabs.org/yourproject/mainline.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url gitorious@git.sugarlabs.org:yourproject/mainline.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://git.sugarlabs.org/yourproject/yourbranch.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = gitorious@git.sugarlabs.org:yourproject/yourbranch.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Request merge".<br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://github.com/username/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93803Activity Team/Git FAQ2014-12-02T19:26:55Z<p>Ignacio Rodríguez: /* How can I get commit access behind firewall? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Add Committer".<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Clone repository".<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://git.sugarlabs.org/yourproject/mainline.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url gitorious@git.sugarlabs.org:yourproject/mainline.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://git.sugarlabs.org/yourproject/yourbranch.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = gitorious@git.sugarlabs.org:yourproject/yourbranch.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Request merge".<br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://git.sugarlabs.org/myproject/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
https://github.com/username/<project>.git<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host github.com<br />
User git<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 github.com 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93801Activity Team/Git FAQ2014-12-02T18:57:26Z<p>Ignacio Rodríguez: /* How do I create a new project? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in github as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin git@github.com:username/[your project name].git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Add Committer".<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Clone repository".<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://git.sugarlabs.org/yourproject/mainline.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url gitorious@git.sugarlabs.org:yourproject/mainline.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://git.sugarlabs.org/yourproject/yourbranch.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = gitorious@git.sugarlabs.org:yourproject/yourbranch.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Request merge".<br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://git.sugarlabs.org/myproject/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
http://git.sugarlabs.org/git/<project>/mainline.git<br />
<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host git.sugarlabs.org<br />
User gitorious<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 git.sugarlabs.org 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93800Activity Team/Git FAQ2014-12-02T18:56:38Z<p>Ignacio Rodríguez: /* How do I migrate a project to git.sugarlabs.org? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to GitHub? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_SugarLabs|instructions here]] to first set up your project's entry in GitHub.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in gitorious as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin gitorious@git.sugarlabs.org:[your project name]/mainline.git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Add Committer".<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Clone repository".<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://git.sugarlabs.org/yourproject/mainline.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url gitorious@git.sugarlabs.org:yourproject/mainline.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://git.sugarlabs.org/yourproject/yourbranch.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = gitorious@git.sugarlabs.org:yourproject/yourbranch.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Request merge".<br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://git.sugarlabs.org/myproject/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
http://git.sugarlabs.org/git/<project>/mainline.git<br />
<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host git.sugarlabs.org<br />
User gitorious<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 git.sugarlabs.org 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93797Activity Team/Git FAQ2014-12-02T18:45:32Z<p>Ignacio Rodríguez: /* How do I create an account on git.sugarlabs.org? */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on github.com? ===<br />
<br />
:[http://github.com/join Join] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to git.sugarlabs.org? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_OLPC|instructions here]] to first set up your project's entry in Gitorious.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in gitorious as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin gitorious@git.sugarlabs.org:[your project name]/mainline.git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Add Committer".<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Clone repository".<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://git.sugarlabs.org/yourproject/mainline.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url gitorious@git.sugarlabs.org:yourproject/mainline.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://git.sugarlabs.org/yourproject/yourbranch.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = gitorious@git.sugarlabs.org:yourproject/yourbranch.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Request merge".<br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://git.sugarlabs.org/myproject/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
http://git.sugarlabs.org/git/<project>/mainline.git<br />
<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host git.sugarlabs.org<br />
User gitorious<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 git.sugarlabs.org 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_FAQ&diff=93796Activity Team/Git FAQ2014-12-02T18:42:55Z<p>Ignacio Rodríguez: /* Help! I suddenly can't connect to Gitorious! */</p>
<hr />
<div><noinclude>{{TeamHeader|Activity Team}}</noinclude><br />
: '''[[Talk:Activity Team/Git FAQ | Post new questions here]]'''.<br />
==Using gitorious (git.sugarlabs.org)==<br />
=== Help! I suddenly can't connect to Gitorious! ===<br />
:The [http://osuosl.org/ OSUOSL], which hosts Gitorious, has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.<br />
<br />
To check if the problem is with your key, try:<br />
<br />
ssh -v git@github.com<br />
<br />
A successful ssh setup results in a normal response "Hi! You've successfully authenticated, but GitHub does not provide shell access."<br />
<br />
=== How do I create an account on git.sugarlabs.org? ===<br />
<br />
:[http://git.sugarlabs.org/users/new Register] using the link on the upper right menu on the Home Page.<br />
<br />
===How do I migrate a project to git.sugarlabs.org? ===<br />
<br />
:Please follow the [[Activity Team/How_to_migrate_from_OLPC|instructions here]] to first set up your project's entry in Gitorious.<br />
<br />
=== How do I create a new project? ===<br />
<br />
:First set up the project in gitorious as per above.<br />
<br />
:Go to your project directory and type:<br />
<nowiki>git init<br />
<br />
git add .<br />
git commit -a<br />
git remote add origin gitorious@git.sugarlabs.org:[your project name]/mainline.git<br />
git push origin master</nowiki><br />
<br />
:Hence forth, just use:<br />
git commit<br />
git push<br />
<br />
:You can also use<br />
git commit -a -m "I am the commit message"<br />
:to avoid opening an editor.<br />
<br />
=== How do I add an additional committer to my project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Add Committer".<br />
<br />
=== How do I create a fork of an existing project? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Clone repository".<br />
<br />
:Note: if you (as maintainer) are making a clone to replace a corrupted mainline on your local machine, you'll need to:<br />
<br />
git clone git://git.sugarlabs.org/yourproject/mainline.git<br />
<br />
:and update [remote] section<br />
<br />
git config remote.origin.url gitorious@git.sugarlabs.org:yourproject/mainline.git<br />
<br />
----<br />
<br />
:in the .git/config file, you may have to change:<br />
[remote "origin"]<br />
url = git://git.sugarlabs.org/yourproject/yourbranch.git<br />
<br />
:to:<br />
[remote "origin"]<br />
url = gitorious@git.sugarlabs.org:yourproject/yourbranch.git<br />
<br />
=== How do I request a merge? ===<br />
<br />
:Click on the Repositories Tab of the project page in Gitorious. Click on "Mainline". A link will appear on the right-hand side of the page saying, "Request merge".<br />
<br />
===What is the difference between a branch and a repository?===<br />
<br />
When you make a clone of a project on gitorious, it creates a "repository". You can see the list of repositories associated with a project by clicking on the Repository Tab. Branches are clones within a repository (created with git branch and accessed through git checkout). Git merge commands refer to branches, not repositories, so in order to merge a repository back into mainline, you need to pull (fetch followed by merge) it as if it were a patch.<br />
<br />
git merge [your repository name] # This won't work<br />
<br />
git pull [git://git.sugarlabs.org/[your project name]/[your repository name].git master # This will work<br />
<br />
===How do I select which branch I am working on?===<br />
<br />
git checkout master<br />
<br />
git checkout sucrose-0.84<br />
<br />
===How do I merge changes from master into a branch?===<br />
<br />
git checkout sucrose-0.84<br />
git rebase master<br />
<br />
===How do I push my branch to gitorious?===<br />
<br />
Use <code>git push origin <your branch name></code>, e.g.,<br />
<br />
git push origin sucrose-0.84<br />
<br />
See [[Development_Team/Release#Branching]] for more details as to when and why you branch.<br />
<br />
==Patches==<br />
<br />
=== How do I generate a patch? ===<br />
<br />
git diff > blah.patch<br />
:or<br />
diff -rup [old] [new]<br />
:or<br />
git format-patch HEAD^<br />
<br />
It is preferable that you generate your patch from the root directory of your project.<br />
<br />
=== How do I apply a patch? ===<br />
<br />
First, take a look at what changes are in the patch. You can do this easily with '''git apply''' f.e:<br />
<br />
git apply --stat sugar_fixes.patch<br />
<br />
Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After opening the patch file with your favorite editor, you can see what the actual changes are.<br />
<br />
Next, you’re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.<br />
<br />
git apply --check sugar_fixes.patch<br />
<br />
If you don’t get any errors, the patch can be applied cleanly. Otherwise you may see what trouble you’ll run into. To apply the patch, we can use '''git am''' instead of '''git apply'''. The reason for this is that git am allows you to sign off an applied patch. This may be useful for later reference.<br />
<br />
git am --signoff <br />
<br />
Taken from: [http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/]<br />
<br />
==== Appying a patch from thunderbird ====<br />
*Right click save as <br />
* cat <save-as> | git am --signoff<br />
<br />
=== How do I send a patch to a maintainer? ===<br />
<br />
First, you may need to install git-mail:<br />
<br />
sudo yum -y install git-email<br />
<br />
<br />
An easy way to send a complete patch is to commit in git, then do:<br />
<br />
git format-patch -s -1<br />
git send-email --to <maintainer> --cc <mailing-list> <filename><br />
<br />
For example, you can do:<br />
<br />
git send-email --to <maintainer> --subject=mail-subject 0003-service-name-deprecated.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate 0001-*.patch<br />
<br />
git send-email --to <maintainer> --cc <mailing-list> --subject=new-patch --cover-letter --annotate --no-validate 0001-*.patch<br />
<br />
<br />
You can also generate a [[#How do I request a merge?|merge request]] on Gitorious from your forked repository to mainline.<br />
<br />
=== How do I send a patch to the Sugar developers? ===<br />
<br />
git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch<br />
<br />
==== How do I set up git-send-email? ====<br />
<br />
1. Install git-email<br />
<br />
2. Configure your ~/.gitconfig file<br />
[user]<br />
email = foo@sugarlabs.org<br />
name = Foo Bar<br />
<br />
[sendemail]<br />
smtpserver = smtp.gmail.com<br />
smtpserverport = 465<br />
smtpuser = foo@sugarlabs.org<br />
smtpencryption = ssl<br />
suppresscc = author<br />
<br />
3. In the directory where patch is present use:<br />
<br />
git send-email HEAD^..HEAD --to "sugar-devel@lists.sugarlabs.org" patchname.patch<br />
<br />
You can configure the destination address so you don't need to specify<br />
it manually every time:<br />
<br />
git config sendemail.to "sugar-devel <sugar-devel@lists.sugarlabs.org>"<br />
<br />
You need to do this for each of the repositories you are working on (e.g. sugar + sugar-toolkit).<br />
<br />
For more git send-email options please see ''man git send-email''<br />
<br />
=== How do I amend a commit message? ===<br />
<br />
If you have "dirty" history (i.e. other patches that are not in mainline<br />
yet) please create a branch carrying only those two patches and push<br />
that branch:<br />
<br />
git checkout -b to-push origin/master<br />
git cherry-pick <commit ID of first patch><br />
git commit --amend<br />
(fix summary)<br />
git cherry-pick <commit ID of second patch><br />
git commit --amend<br />
(fix summary)<br />
git push origin to-push:master<br />
<br />
You can remove the branch afterwards:<br />
<br />
git checkout master<br />
git branch -d to-push<br />
<br />
=== How do I revert a commit? ===<br />
<br />
Again, best to do this on a branch as per [[#How do I amend a commit message?|above]]<br />
<br />
Find the commit id and then:<br />
<br />
git revert <commit ID><br />
<br />
=== As a maintainer, how do I merge a patch? ===<br />
<br />
:git-pull does a combination of fetch and merge, so to merge a patch...<br />
<br />
git pull git://git.sugarlabs.org/myproject/myproject-clone.git master<br />
<br />
=== What is the community protocol for submitting patches? ===<br />
<br />
# Introduce yourself to the community.<br />
# Don't leave questions without a reply.<br />
# Whenever you take a task that someone else was doing, mention it explicitly so others aren't concerned about wasting efforts.<br />
# Ask when you don't understand.<br />
# Answer other people's questions when you can.<br />
<br />
==Internationalization work flow==<br />
<br />
The i18n work flow involves an interplay between the Pootle server, where translations are maintained and gitorious, where the master POT files are updated. '''Note''': As a maintainer, you may update the .pot file associated with your project, but never update .po files. These are updated for you in the i18n work flow.<br />
<br />
=== How do I get translations for my project? ===<br />
<br />
# Use the gettext mechanism for your stings.<br />
# Use <code>python setup.py genpot</code> to generate a .pot file for your project.<br />
# Fill a ticket requesting that your POT file be added to Pootle. Assign the ticket to "Localization".<br />
# Add User Pootle to the list of committers on your project.<br />
<br />
=== How do I stay in sync with translations being pushed from the Pootle server? ===<br />
<br />
:Periodically—in my experience, on Fridays—updates to the project .po files are pushed from the Localization team.<br />
<br />
:Use <code> git-pull </code> to periodically pull these updates to the local copy of your project.<br />
<br />
:Also, run <code>python setup.py fix_manifest</code> to update the .mo files after updating the .po files<br />
<br />
:'''Note:''' After every major release, a new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches.<br />
<br />
=== How do my string changes get into Pootle? ===<br />
<br />
Any changes to your project's .pot file are daily pulled into Pootle from git. All you have to do as a developer is make to regenerate your pot file whenever you make string changes.<br />
<br />
setup.py genpot<br />
git commit po/Myproject.pot -m "new strings"<br />
git push<br />
<br />
==Misc.==<br />
<br />
=== What if my project has a binary blob? ===<br />
<br />
:You may have to use the --force flag.<br />
<br />
git push -fv<br />
<br />
=== How do I update the Tag field in Gitorious? ===<br />
<br />
git tag -m "Release 36" v36 HEAD<br />
git push --tags<br />
<br />
=== How do I list tags ? ===<br />
<br />
git tag -l <br />
<br />
=== How do I checkout specific tags? ===<br />
<br />
git checkout <tag_name><br />
<br />
=== How do I delete specific tags? ===<br />
<br />
git tag -d <tag_name><br />
git push origin :refs/tags/<tag_name><br />
<br />
===How can I get commit access behind firewall?===<br />
<br />
:If you are behind a firewall and need only ''Read-Only'' access to git.sugarlabs.org, you can use HTTP links, like<br />
http://git.sugarlabs.org/git/<project>/mainline.git<br />
<br />
:But if you need commit access, you'll have to set up an SSH proxy tunnel. One option is using [http://www.torproject.org/ Tor]. So, install all requirements:<br />
* [http://www.torproject.org/ Tor] to make tunnel via Tor network,<br />
* [http://www.meadowy.org/~gotoh/projects/connect/ connect] to let SSH use this tunnel.<br />
:You don't need any special configs for this software (in case of Tor, if your distribution makes some smart pre-configurations, just remove /etc/tor/torrc).<br />
<br />
:Setup your tunnel in SSH. Add the following lines to your ~/.ssh/config<br />
Host git.sugarlabs.org<br />
User gitorious<br />
ProxyCommand /usr/bin/connect -S 127.0.0.1:9050 git.sugarlabs.org 22<br />
<br />
:Then start [http://www.torproject.org/ Tor], you can just run it on behalf of your account<br />
tor<br />
<br />
:Then do the regular stuff you can do without any firewalls.<br />
<br />
:''NOTE:'' If you use [http://www.torproject.org/ Tor] on a regular basis, please consider the possibility of [http://www.torproject.org/docs/tor-doc-relay.html.en helping] Tor by donating your bandwidth.<br />
<br />
===Why are my commits not visible on git.sugarlabs.org event pages?===<br />
<br />
Check that your email address on git.sugarlabs.org account page is the same like in [[Activity_Team/Git_Tutorial#Initialize_git_global_settings|global git settings]] or in local repository setting (if you set user.email once):<br />
git config user.email<br />
<br />
=== New activity maintainer walkthrough ===<br />
<br />
Here's an IRC session recording the very first steps of new activity maintainer learning how to merge patches:<br />
<br />
*:[[Activity_Team/Git_Activity_Maintainer_Walkthrough]]<br />
<br />
<br />
[[Category:Activity Team]]<br />
[[Category:FAQ]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team&diff=93795Activity Team2014-12-02T18:28:52Z<p>Ignacio Rodríguez: /* glossary */</p>
<hr />
<div><noinclude><div class="noprint">{{TeamHeader|Activity Team}}</div></noinclude><br />
<br />
==Mission==<br />
<br />
{{:Activity Team/Mission}}<br />
<br />
==Tips for Activity Developers==<br />
<br />
=== Ask your 'newbie' question on-line ===<br />
<br />
Join [http://en.wikipedia.org/wiki/IRC IRC] channel [irc://irc.freenode.net/sugar #sugar] (e.g. via [http://webchat.freenode.net/?randomnick=1&prompt=1&channels=sugar web client]) and ask your question about activity, or sugar core, development process. Also browse chat [http://meeting.sugarlabs.org/sugar logs].<br />
<br />
=== Creating a new activity ===<br />
<br />
See [[Activity Team/Creating a New Activity|Creating a New Activity]] and [[Activity Team/Resources|Activity Team Resources]].<br />
<br />
=== Automated Testing ===<br />
<br />
See [[Automated Activity Testing]]<br />
<br />
===Port to GTK3===<br />
<br />
We have hints on [[Features/GTK3/Porting|porting from GTK2 to GTK3]].<br />
<br />
===Move an activity===<br />
<br />
We need help moving activities over to Sugar Labs from GitHub servers. This is a great way to get started helping out the Activity Team. See [[Activity Team/How_to_migrate_from_SugarLabs]] for instructions, and [[Activity Team/Activity Status]] for the list of activities that need to be moved.<br />
<br />
While moving activities, it would be great to check that the .pot files are up to date and the MANIFEST is correct. This will really help out the distro packagers.<br />
<br />
== Set up SugarLabs services ==<br />
* '''Upload a xo bundle''' to [http://activities.sugarlabs.org/ activities.sugarlabs.org]. Be sure to include a couple of screenshots of your activity in action.<br />
* If your activity is part of Fructose, '''upload a .tar.bz2''' to [http://download.sugarlabs.org/ download.sugarlabs.org]. Request a shell account from the [[Infrastructure Team]] if you don't have one already.<br />
* '''Update the OLPC wiki page''' for the Activity, noting the migration. Use the [http://wiki.laptop.org/go/Template:Migrated_to_sl.o Migrated to sl.o] template.<br />
* '''Change sugar-jhbuild''' to point to the new repository if this activity was included in sugar-jhbuild (enter a ticket in http://dev.sugarlabs.org if you have no access).<br />
* Ask an [[Activity Team/Contacts|Activity Team Coordinator]] to create a '''Trac component''' for your activity.<br />
<br />
===Cross-platform compatibility===<br />
<br />
As Sugar is integrated into more distros and the hardware base expands, it is important to keep Activity developers informed of any issues they need be aware of. For example, when Sugar was only expected to run on the XO-1 laptop, it was safe to assume that the display was always 1200x900. <br />
<br />
The [[Activity Team/Compatibility Tips|Compatibility Tips]] page is a place to accumulate tips.<br />
<br />
===Migrating from GTK2 to GTK3===<br />
<br />
The Sugar platform is migrating from GTK2 to GTK3 to stay relevant with upstream changes and benefit from their efforts. Sugar 0.96 (available in OLPC 12.1 development builds) includes support for a transition period, where both GTK2 and GTK3 activities can coexists, but new Sugar features will only be added to the GTK3 toolkit (e.g. improvements in touchscreen support). Have a read through the [http://wiki.sugarlabs.org/go/Features/GTK3/Porting migration notes], and the [http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html GTK3 Python tutorials] to get a feel for how things need to be changed. New activities should be developed with GTK3, unless you need to support an existing deployment today using an older build.<br />
<br />
===Modify Activities===<br />
<br />
A guide has been written describing how to make simple modifications to popular Sugar activities. Examples include adding sounds to TamTam, blocks to TurtleArt, buttons to Calculate, etc.<br />
<br />
* [[Activity Team/Modifying an Activity]]<br />
<br />
===Remote control your XO===<br />
<br />
[[Activity Team/Remote control your XO|Remote control your XO]] from your development machine can be handy while developing an activity.<br />
<br />
===Internationalization===<br />
<br />
We use '''[http://docs.python.org/library/gettext.html gettext]''' to internationalize activities. The basic steps are:<br />
<br />
In your Python code:<br />
from gettext import gettext as _<br />
<br />
Hence forth, encapsulate strings that you want translated in _():<br />
_('string to be translated')<br />
<br />
Run <code>setup.py</code> to generate a POT file for your project. This file will contain a reference to all of the encapsulated strings.<br />
<br />
From here, you need to:<br />
# <code>git add</code>, <code>commit</code>, and <code>push</code> the POT file to git<br />
# request that your project be added to the pootle server (by filing a task to the localization component on bugs.sugarlabs.org)<br />
# add pootle as a committer to your project on gitorious<br />
<br />
Once translations are committed to your project:<br />
# do a <code>git pull</code> to get a local copy of the .po files<br />
# run <code>setup.py fix_manifest</code> to create the .mo files used at run time<br />
Details can be found on the [[Translation Team/i18n Best Practices]] page.<br />
<br />
===General overview of git===<br />
<br />
Read the brief overview below but then '''start''' with our <br />
* [[Activity Team/Git Tutorial|git tutorial]].<br />
<br />
====glossary====<br />
<br />
;VCS: Version Control System &mdash; keeps track of changes to a set of files.<br />
;git: the distributed VCS used by Sugar Labs<br />
;commit: set of changes to files tracked by a VCS, accompanied by metadata (author, description, etc.)<br />
;diff/patch: (usually textual) representation of changes. These are also the names of specific tools used to create/apply these representations of changes.<br />
;repository: storage place for commits, usually of a certain piece of software<br />
;gitorious: software for hosting git repositories, including a web interface for administration<br />
;git.sugarlabs.org: server hosted by Sugar Labs running gitorious<br />
;github: sugarlabs is moving all repositories to GitHub, github = gitorious<br />
<br />
====Setup====<br />
(Once per machine you're working on)<br />
git clone git://github.com/whatever/mainline.git whatever<br />
<br />
====Regular usage====<br />
cd whatever<br />
[hack away and test your changes]<br />
git diff<br />
[review your changes, go back to hacking if you notice a mistake]<br />
git status<br />
git add NameOfNewFile # if you created any file you want included<br />
git commit -a<br />
[describe your changes - by convention the first line is a summary and the remaining lines are long description]<br />
[start again at hacking if you're offline]<br />
git log origin/master..master # shows you all commits not pushed yet<br />
git push # if/once you are online<br />
<br />
Git offers a lot more commands and features that can make your life<br />
easier, but it's best to start off small and use only those mentioned<br />
above. It's very easy to get confused if you're unfamiliar with git.<br />
<br />
Even if you use the more advanced features, git does a pretty good job at<br />
allowing you to recover from your mistakes.<br />
So if you ever mess up and don't know how to fix it yourself, please<br />
stop (at least for me that's usually the hardest part ;) ), try to<br />
recollect the exact sequence of actions (e.g. from shell history) and ask<br />
for help.<br />
<br />
----<br />
<br />
Once you have [[Activity Team/How_to_migrate_from_OLPC|migrated]] your project, you may have some more detailed [[Activity Team/Git FAQ|questions regarding how Sugar Labs uses git]], particularly in regard to patch management.<br />
<br />
----<br />
<br />
{{:Activity Team/Git}}<br />
<br />
== Maintainers ==<br />
<br />
{{:Activity Team/Maintainers}}<br />
<br />
== Testers ==<br />
<br />
Please see the [[Features/Soas_V4/ASLOxo_Activity_Test_Table|Activity Test-table page]] for tester information.<br />
<br />
== Background information ==<br />
<br />
=== Sugar Activities ===<br />
<br />
There is an [[Activities]] page where we highlight Sugar activities in the wiki. (We need to discuss how best to manage the content of this page as well as how to manage the activity-specific sub-pages.)<br />
<br />
===Sugar [[Human Interface Guidelines]]===<br />
<br />
The [[Human_Interface_Guidelines|Sugar Human Interface Guidelines]] content has also been migrated to Sugar Labs. This guide is a critical resource when designing activities. <br />
: An [[Activity Team/Project Ideas#Activity HIG|Activity HIG]] discussion<br />
<br />
===Sugar Almanac===<br />
<br />
The [[Development Team/Almanac|Sugar Almanac]] content has been migrated to Sugar Labs. It's a great, quick reference when building python Activities.<br />
<br />
===activities.sugarlabs.org===<br />
<br />
The [http://activities.sugarlabs.org Sugar Activity Library] is our user-facing portal for Sugar activities. The site uses the back-end Mozilla built for Firefox and Thunderbird extensions at addons.mozilla.org, called Remora. To help out, check out [[Activity Library]].<br />
<br />
===sugar-widgets library===<br />
<br />
See [[Development Team/sugar-port]].<br />
<br />
===sugar-sprites library===<br />
<br />
See [[Activity Team/Sugar-sprites]]<br />
<br />
== Misc. ==<br />
<br />
===Mime types and file suffixes===<br />
<br />
You can associate your activity with mime types by including a mime_types entry in the activity/activity.info file; e.g.<br />
<br />
mime_types = text/plain;text/x-python;text/x-logo;text/x-svg;application/xml;text/html;text/xml;image/svg+xml<br />
<br />
You can associate your activity with a file suffix by including a mimetypes.xml file in your activity subdirectory:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"><br />
<mime-type type="application/x-turtle-art"><br />
<comment xml:lang="en">Turtle Art</comment><br />
<glob pattern="*.ta"/><br />
</mime-type><br />
</mime-info><br />
<br />
'''Note:''' You cannot just copy your activity into the ~/Activities directory. You have to install it as a .xo bundle or using 'setup.py install' (note that the latter is tricky as the command might get your paths messed up). This installation step will create a file --> ~/.local/share/mime/packages/<your-bundle_id>.xml<br />
<br />
If your activity does not register any mimetype, then it won't matter.<br />
<br />
If your activity was already properly installed (with sugar-install-bundle), then copying new source into Activities will not be affected by this problem unless the new source registers a new mimetype that the old source did not.<br />
<br />
=== Activity Team users on activities.sugarlabs.org ===<br />
<br />
Fake emails to identify users:<br />
* ''activity.team@sugarlabs.org'' activities that are supported by Activity Team<br />
* ''trash@dev.null'' activities to remove<br />
<br />
===setup.py===<br />
<br />
There is a handy utility that is a standard part of Sugar Activity bundles, setup.py. You should use it to create and update POT files, generate a MANIFEST file and update locale files, and create .xo and .tar files for distribution.<br />
<br />
./setup.py genpot # generates or updates the POT file used by gettext for internationalization<br />
./setup.py build<br />
./setup.py fix_manifest # updates the MANIFEST file and generates or updates the locale files used for internationalization<br />
./setup.py dist_xo # creates an .xo bundle from your project<br />
./setup.py dist_source # creates a .tar.gz file from your project<br />
<br />
===Packaging activities discussion=== <br />
<br />
We are currently discussing how to package activities in the future, in order to support all distributions. Please add your comments to the following pages.<br />
* [[Activity Team/Packaging|Packaging]]<br />
** should we remove "Activities" section from that page; all issues where moved to Activity_Status page [[User:Alsroot|alsroot]] 10:33, 16 January 2009 (UTC)<br />
* [[Activity Team/Packaging Ideas|Packaging ideas]]<br />
<br />
=== The Sugar Control Panel ===<br />
<br />
While not strictly in the realm of Activities, it may be useful on occasion to add a section to the Sugar Control Panel. [[Activity Team/Control Panel|Things to keep in mind]].<br />
<br />
=== A typical update cycle ===<br />
<br />
Anyone can contribute a patch to a Sugar Activity. The typical work cycle involves an interaction with the activity (project) maintainer as follows:<br />
# make a clone (anyone)<br />
# make your changes (anyone)<br />
# mail your patch to sugar_devel (anyone)<br />
# make changes as per suggestions by the project maintainer and developer community (anyone)<br />
# push your changes (anyone)<br />
# request a merge (anyone)<br />
# write release notes (anyone)<br />
# tag the new version in git (project maintainer)<br />
# create the .xo and .tar files (project maintainer)<br />
# upload .tar to download.sugarlabs.org (project maintainer)<br />
# upload .xo to activities.sugarlabs.org (project maintainer)<br />
# update wiki documentation (anyone)<br />
<br />
=== OLPC XO game buttons ===<br />
<br />
The game buttons on the OLPC XO are accessible:<br />
* The left-side buttons map to KP_Up, KP_Right, KP_Down, and KP_Left<br />
* The right-side buttons map to KP_Page_Up (o), KP_End (✓), KP_Page_Down (×), and KP_Home (◽)<br />
<br />
=== The Sugar Object Chooser ===<br />
<br />
The Object Chooser is the activity-level user interface to the Journal. Examples and caveats are found [[Activity_Team/Object_Chooser|here]].<br />
<br />
==[[Activity Team/Project Ideas|Project Ideas]]==<br />
<br />
The Activity Team always needs project ideas and suggestions. Post your ideas to [[Activity Team/Project Ideas]]. <br />
<br />
If you see something here you would like to help with, please [[Activity Team/Contacts|contact us]].<br />
<br />
[[User:Wade|Wade]] 17:19, 13 January 2009 (UTC)<br />
<br />
==Additional resources==<br />
<br />
Additional resources may be found [[Activity_Team/Resources|here]].<br />
<br />
==Sugar Activity development courses==<br />
<br />
There are university- and secondary-school-level courses being taught around Sugar development. Several of the syllabi are on line:<br />
<br />
* http://wiki.paraguayeduca.org/index.php/Curso_Sugar_FPUNA is being adapted by UNA<br />
* http://teachingopensource.org/index.php/RIT/The_Course is being taught at RIT<br />
<br />
==Meetings==<br />
<br />
Please check [[/Meetings]] for meeting schedules/logs. <br />
<br />
== Moving to Sugar Labs ==<br />
<br />
A few notes re moving to the Sugar Labs infrastructure:<br />
<br />
* use git init to create a new project unless it already exists.<br />
* use <code>setup.py dist_source</code> to make the source package associated with your project.<br />
* source packages now go in:<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/<br />
<br />
: from there, if your project (if it is an Activity) probably belongs in the honey subdirectory, e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/honey/Abacus/<br />
<br />
: If your project is part of the Sugar core, it goes in sucrose/fructose/ (for core Activities) or sucrose/glucose (for core modules), e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/fructore/TurtleArt/<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/glucose/sugar-toolkit/<br />
<br />
* don't forget to update addons as well!!<br />
activities.sugarlabs.org<br />
<br />
* and to copy the tar file to download.sugarlabs.org<br />
download.sugarlabs.org:/download/sources/honey/...<br />
download.sugarlabs.org:/download/sources/sucrose/fructose/...<br />
<br />
== Subpages ==<br />
{{Special:PrefixIndex/{{PAGENAME}}/}}<br />
<br />
[[Category:Activity Team]]<br />
[[Category:Team]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team&diff=93794Activity Team2014-12-02T18:26:03Z<p>Ignacio Rodríguez: /* Move an activity */</p>
<hr />
<div><noinclude><div class="noprint">{{TeamHeader|Activity Team}}</div></noinclude><br />
<br />
==Mission==<br />
<br />
{{:Activity Team/Mission}}<br />
<br />
==Tips for Activity Developers==<br />
<br />
=== Ask your 'newbie' question on-line ===<br />
<br />
Join [http://en.wikipedia.org/wiki/IRC IRC] channel [irc://irc.freenode.net/sugar #sugar] (e.g. via [http://webchat.freenode.net/?randomnick=1&prompt=1&channels=sugar web client]) and ask your question about activity, or sugar core, development process. Also browse chat [http://meeting.sugarlabs.org/sugar logs].<br />
<br />
=== Creating a new activity ===<br />
<br />
See [[Activity Team/Creating a New Activity|Creating a New Activity]] and [[Activity Team/Resources|Activity Team Resources]].<br />
<br />
=== Automated Testing ===<br />
<br />
See [[Automated Activity Testing]]<br />
<br />
===Port to GTK3===<br />
<br />
We have hints on [[Features/GTK3/Porting|porting from GTK2 to GTK3]].<br />
<br />
===Move an activity===<br />
<br />
We need help moving activities over to Sugar Labs from GitHub servers. This is a great way to get started helping out the Activity Team. See [[Activity Team/How_to_migrate_from_SugarLabs]] for instructions, and [[Activity Team/Activity Status]] for the list of activities that need to be moved.<br />
<br />
While moving activities, it would be great to check that the .pot files are up to date and the MANIFEST is correct. This will really help out the distro packagers.<br />
<br />
== Set up SugarLabs services ==<br />
* '''Upload a xo bundle''' to [http://activities.sugarlabs.org/ activities.sugarlabs.org]. Be sure to include a couple of screenshots of your activity in action.<br />
* If your activity is part of Fructose, '''upload a .tar.bz2''' to [http://download.sugarlabs.org/ download.sugarlabs.org]. Request a shell account from the [[Infrastructure Team]] if you don't have one already.<br />
* '''Update the OLPC wiki page''' for the Activity, noting the migration. Use the [http://wiki.laptop.org/go/Template:Migrated_to_sl.o Migrated to sl.o] template.<br />
* '''Change sugar-jhbuild''' to point to the new repository if this activity was included in sugar-jhbuild (enter a ticket in http://dev.sugarlabs.org if you have no access).<br />
* Ask an [[Activity Team/Contacts|Activity Team Coordinator]] to create a '''Trac component''' for your activity.<br />
<br />
===Cross-platform compatibility===<br />
<br />
As Sugar is integrated into more distros and the hardware base expands, it is important to keep Activity developers informed of any issues they need be aware of. For example, when Sugar was only expected to run on the XO-1 laptop, it was safe to assume that the display was always 1200x900. <br />
<br />
The [[Activity Team/Compatibility Tips|Compatibility Tips]] page is a place to accumulate tips.<br />
<br />
===Migrating from GTK2 to GTK3===<br />
<br />
The Sugar platform is migrating from GTK2 to GTK3 to stay relevant with upstream changes and benefit from their efforts. Sugar 0.96 (available in OLPC 12.1 development builds) includes support for a transition period, where both GTK2 and GTK3 activities can coexists, but new Sugar features will only be added to the GTK3 toolkit (e.g. improvements in touchscreen support). Have a read through the [http://wiki.sugarlabs.org/go/Features/GTK3/Porting migration notes], and the [http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html GTK3 Python tutorials] to get a feel for how things need to be changed. New activities should be developed with GTK3, unless you need to support an existing deployment today using an older build.<br />
<br />
===Modify Activities===<br />
<br />
A guide has been written describing how to make simple modifications to popular Sugar activities. Examples include adding sounds to TamTam, blocks to TurtleArt, buttons to Calculate, etc.<br />
<br />
* [[Activity Team/Modifying an Activity]]<br />
<br />
===Remote control your XO===<br />
<br />
[[Activity Team/Remote control your XO|Remote control your XO]] from your development machine can be handy while developing an activity.<br />
<br />
===Internationalization===<br />
<br />
We use '''[http://docs.python.org/library/gettext.html gettext]''' to internationalize activities. The basic steps are:<br />
<br />
In your Python code:<br />
from gettext import gettext as _<br />
<br />
Hence forth, encapsulate strings that you want translated in _():<br />
_('string to be translated')<br />
<br />
Run <code>setup.py</code> to generate a POT file for your project. This file will contain a reference to all of the encapsulated strings.<br />
<br />
From here, you need to:<br />
# <code>git add</code>, <code>commit</code>, and <code>push</code> the POT file to git<br />
# request that your project be added to the pootle server (by filing a task to the localization component on bugs.sugarlabs.org)<br />
# add pootle as a committer to your project on gitorious<br />
<br />
Once translations are committed to your project:<br />
# do a <code>git pull</code> to get a local copy of the .po files<br />
# run <code>setup.py fix_manifest</code> to create the .mo files used at run time<br />
Details can be found on the [[Translation Team/i18n Best Practices]] page.<br />
<br />
===General overview of git===<br />
<br />
Read the brief overview below but then '''start''' with our <br />
* [[Activity Team/Git Tutorial|git tutorial]].<br />
<br />
====glossary====<br />
<br />
;VCS: Version Control System &mdash; keeps track of changes to a set of files.<br />
;git: the distributed VCS used by Sugar Labs<br />
;commit: set of changes to files tracked by a VCS, accompanied by metadata (author, description, etc.)<br />
;diff/patch: (usually textual) representation of changes. These are also the names of specific tools used to create/apply these representations of changes.<br />
;repository: storage place for commits, usually of a certain piece of software<br />
;gitorious: software for hosting git repositories, including a web interface for administration<br />
;git.sugarlabs.org: server hosted by Sugar Labs running gitorious<br />
<br />
====Setup====<br />
(Once per machine you're working on)<br />
git clone git://github.com/whatever/mainline.git whatever<br />
<br />
====Regular usage====<br />
cd whatever<br />
[hack away and test your changes]<br />
git diff<br />
[review your changes, go back to hacking if you notice a mistake]<br />
git status<br />
git add NameOfNewFile # if you created any file you want included<br />
git commit -a<br />
[describe your changes - by convention the first line is a summary and the remaining lines are long description]<br />
[start again at hacking if you're offline]<br />
git log origin/master..master # shows you all commits not pushed yet<br />
git push # if/once you are online<br />
<br />
Git offers a lot more commands and features that can make your life<br />
easier, but it's best to start off small and use only those mentioned<br />
above. It's very easy to get confused if you're unfamiliar with git.<br />
<br />
Even if you use the more advanced features, git does a pretty good job at<br />
allowing you to recover from your mistakes.<br />
So if you ever mess up and don't know how to fix it yourself, please<br />
stop (at least for me that's usually the hardest part ;) ), try to<br />
recollect the exact sequence of actions (e.g. from shell history) and ask<br />
for help.<br />
<br />
----<br />
<br />
Once you have [[Activity Team/How_to_migrate_from_OLPC|migrated]] your project, you may have some more detailed [[Activity Team/Git FAQ|questions regarding how Sugar Labs uses git]], particularly in regard to patch management.<br />
<br />
----<br />
<br />
{{:Activity Team/Git}}<br />
<br />
== Maintainers ==<br />
<br />
{{:Activity Team/Maintainers}}<br />
<br />
== Testers ==<br />
<br />
Please see the [[Features/Soas_V4/ASLOxo_Activity_Test_Table|Activity Test-table page]] for tester information.<br />
<br />
== Background information ==<br />
<br />
=== Sugar Activities ===<br />
<br />
There is an [[Activities]] page where we highlight Sugar activities in the wiki. (We need to discuss how best to manage the content of this page as well as how to manage the activity-specific sub-pages.)<br />
<br />
===Sugar [[Human Interface Guidelines]]===<br />
<br />
The [[Human_Interface_Guidelines|Sugar Human Interface Guidelines]] content has also been migrated to Sugar Labs. This guide is a critical resource when designing activities. <br />
: An [[Activity Team/Project Ideas#Activity HIG|Activity HIG]] discussion<br />
<br />
===Sugar Almanac===<br />
<br />
The [[Development Team/Almanac|Sugar Almanac]] content has been migrated to Sugar Labs. It's a great, quick reference when building python Activities.<br />
<br />
===activities.sugarlabs.org===<br />
<br />
The [http://activities.sugarlabs.org Sugar Activity Library] is our user-facing portal for Sugar activities. The site uses the back-end Mozilla built for Firefox and Thunderbird extensions at addons.mozilla.org, called Remora. To help out, check out [[Activity Library]].<br />
<br />
===sugar-widgets library===<br />
<br />
See [[Development Team/sugar-port]].<br />
<br />
===sugar-sprites library===<br />
<br />
See [[Activity Team/Sugar-sprites]]<br />
<br />
== Misc. ==<br />
<br />
===Mime types and file suffixes===<br />
<br />
You can associate your activity with mime types by including a mime_types entry in the activity/activity.info file; e.g.<br />
<br />
mime_types = text/plain;text/x-python;text/x-logo;text/x-svg;application/xml;text/html;text/xml;image/svg+xml<br />
<br />
You can associate your activity with a file suffix by including a mimetypes.xml file in your activity subdirectory:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"><br />
<mime-type type="application/x-turtle-art"><br />
<comment xml:lang="en">Turtle Art</comment><br />
<glob pattern="*.ta"/><br />
</mime-type><br />
</mime-info><br />
<br />
'''Note:''' You cannot just copy your activity into the ~/Activities directory. You have to install it as a .xo bundle or using 'setup.py install' (note that the latter is tricky as the command might get your paths messed up). This installation step will create a file --> ~/.local/share/mime/packages/<your-bundle_id>.xml<br />
<br />
If your activity does not register any mimetype, then it won't matter.<br />
<br />
If your activity was already properly installed (with sugar-install-bundle), then copying new source into Activities will not be affected by this problem unless the new source registers a new mimetype that the old source did not.<br />
<br />
=== Activity Team users on activities.sugarlabs.org ===<br />
<br />
Fake emails to identify users:<br />
* ''activity.team@sugarlabs.org'' activities that are supported by Activity Team<br />
* ''trash@dev.null'' activities to remove<br />
<br />
===setup.py===<br />
<br />
There is a handy utility that is a standard part of Sugar Activity bundles, setup.py. You should use it to create and update POT files, generate a MANIFEST file and update locale files, and create .xo and .tar files for distribution.<br />
<br />
./setup.py genpot # generates or updates the POT file used by gettext for internationalization<br />
./setup.py build<br />
./setup.py fix_manifest # updates the MANIFEST file and generates or updates the locale files used for internationalization<br />
./setup.py dist_xo # creates an .xo bundle from your project<br />
./setup.py dist_source # creates a .tar.gz file from your project<br />
<br />
===Packaging activities discussion=== <br />
<br />
We are currently discussing how to package activities in the future, in order to support all distributions. Please add your comments to the following pages.<br />
* [[Activity Team/Packaging|Packaging]]<br />
** should we remove "Activities" section from that page; all issues where moved to Activity_Status page [[User:Alsroot|alsroot]] 10:33, 16 January 2009 (UTC)<br />
* [[Activity Team/Packaging Ideas|Packaging ideas]]<br />
<br />
=== The Sugar Control Panel ===<br />
<br />
While not strictly in the realm of Activities, it may be useful on occasion to add a section to the Sugar Control Panel. [[Activity Team/Control Panel|Things to keep in mind]].<br />
<br />
=== A typical update cycle ===<br />
<br />
Anyone can contribute a patch to a Sugar Activity. The typical work cycle involves an interaction with the activity (project) maintainer as follows:<br />
# make a clone (anyone)<br />
# make your changes (anyone)<br />
# mail your patch to sugar_devel (anyone)<br />
# make changes as per suggestions by the project maintainer and developer community (anyone)<br />
# push your changes (anyone)<br />
# request a merge (anyone)<br />
# write release notes (anyone)<br />
# tag the new version in git (project maintainer)<br />
# create the .xo and .tar files (project maintainer)<br />
# upload .tar to download.sugarlabs.org (project maintainer)<br />
# upload .xo to activities.sugarlabs.org (project maintainer)<br />
# update wiki documentation (anyone)<br />
<br />
=== OLPC XO game buttons ===<br />
<br />
The game buttons on the OLPC XO are accessible:<br />
* The left-side buttons map to KP_Up, KP_Right, KP_Down, and KP_Left<br />
* The right-side buttons map to KP_Page_Up (o), KP_End (✓), KP_Page_Down (×), and KP_Home (◽)<br />
<br />
=== The Sugar Object Chooser ===<br />
<br />
The Object Chooser is the activity-level user interface to the Journal. Examples and caveats are found [[Activity_Team/Object_Chooser|here]].<br />
<br />
==[[Activity Team/Project Ideas|Project Ideas]]==<br />
<br />
The Activity Team always needs project ideas and suggestions. Post your ideas to [[Activity Team/Project Ideas]]. <br />
<br />
If you see something here you would like to help with, please [[Activity Team/Contacts|contact us]].<br />
<br />
[[User:Wade|Wade]] 17:19, 13 January 2009 (UTC)<br />
<br />
==Additional resources==<br />
<br />
Additional resources may be found [[Activity_Team/Resources|here]].<br />
<br />
==Sugar Activity development courses==<br />
<br />
There are university- and secondary-school-level courses being taught around Sugar development. Several of the syllabi are on line:<br />
<br />
* http://wiki.paraguayeduca.org/index.php/Curso_Sugar_FPUNA is being adapted by UNA<br />
* http://teachingopensource.org/index.php/RIT/The_Course is being taught at RIT<br />
<br />
==Meetings==<br />
<br />
Please check [[/Meetings]] for meeting schedules/logs. <br />
<br />
== Moving to Sugar Labs ==<br />
<br />
A few notes re moving to the Sugar Labs infrastructure:<br />
<br />
* use git init to create a new project unless it already exists.<br />
* use <code>setup.py dist_source</code> to make the source package associated with your project.<br />
* source packages now go in:<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/<br />
<br />
: from there, if your project (if it is an Activity) probably belongs in the honey subdirectory, e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/honey/Abacus/<br />
<br />
: If your project is part of the Sugar core, it goes in sucrose/fructose/ (for core Activities) or sucrose/glucose (for core modules), e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/fructore/TurtleArt/<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/glucose/sugar-toolkit/<br />
<br />
* don't forget to update addons as well!!<br />
activities.sugarlabs.org<br />
<br />
* and to copy the tar file to download.sugarlabs.org<br />
download.sugarlabs.org:/download/sources/honey/...<br />
download.sugarlabs.org:/download/sources/sucrose/fructose/...<br />
<br />
== Subpages ==<br />
{{Special:PrefixIndex/{{PAGENAME}}/}}<br />
<br />
[[Category:Activity Team]]<br />
[[Category:Team]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/How_to_migrate_from_Gitorious&diff=93793Activity Team/How to migrate from Gitorious2014-12-02T18:24:29Z<p>Ignacio Rodríguez: Created page with "== Migrate the code == * If you are not the author of the activity, '''query''' the author to let them know about the move. * '''Create''' an account on http://github.com and..."</p>
<hr />
<div>== Migrate the code ==<br />
* If you are not the author of the activity, '''query''' the author to let them know about the move.<br />
* '''Create''' an account on http://github.com and '''log in'''. Add your public SSH key to [https://github.com/settings/ssh your account].<br />
* '''Create a new project''' (http://github.com, Your repositories, New repository).<br />
* '''Clone''' your activity from [http://github.com github.com].<br />
git clone git://github.com/'''username'''/pippy.git<br />
* '''If''' you want to migrate a non-master branch...<br />
git remote show origin<br />
git checkout -b sucrose-0.82 origin/sucrose-0.82<br />
* '''Push''' to git.sugarlabs.org with something like:<br />
git push git@github.com:'''username'''/pippy.git --mirror<br />
* '''Clone''' the project from the new repository in order to be able to push your changes. You'll need to do a git clone into an empty directory, using the same URL you used with your previous push:<br />
git clone git@github.com:'''username'''/pippy.git<br />
If you're getting a message saying '''fatal: The remote end hung up unexpectedly''' that probably means that this URL is incorrect.</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team/Creating_a_New_Activity&diff=93792Activity Team/Creating a New Activity2014-12-02T18:18:12Z<p>Ignacio Rodríguez: /* Checklist for new activities */</p>
<hr />
<div>== Documentation for activity authors ==<br />
<br />
See [[Activity Team/Resources]].<br />
<br />
== Checklist for new activities ==<br />
<br />
* Create a GitHub project repository at http://github.com and start hacking on your code! :-) <br />
* Request a trac component for your activity at http://bugs.sugarlabs.org/ <br />
* Open a trac ticket to request addition to http://translate.sugarlabs.org/ (when your strings are mature) <br />
* Add your Activity to http://wiki.sugarlabs.org/go/Sugar_on_a_Stick/Roadmap if you want to be on the SoaS distro <br />
<br />
* If your Activity is migrating over from the OLPC infrastructure, see: [[Activity_Team/How_to_migrate_from_OLPC|How to migrate from OLPC]].<br />
<br />
== When releasing an existing Activity ==<br />
<br />
* If you have one, update your wiki page at http://wiki.sugarlabs.org/go/Activities/<actvity-name><br />
* Upload your new .xo bundle, screenshots, notes to http://activities.sugarlabs.org/<br />
* Unless your source code is already available through git, upload a .bz2 source tarball to shell.sugarlabs.org /upload/sugar/sources/honey (e.g., scp to download.sugarlabs.org:/srv/upload/sources/fructose/...)<br />
* Edit http://wiki.sugarlabs.org/go/Development_Team/Source_Code and make sure it's pointing to your latest source tarball<br />
<br />
== Before you write a new activity ==<br />
<br />
Do you have an idea for a new Activity you'd like to write but don't know how to begin? Here's some advice:<br />
<br />
* Don't try to write a Sugar Activity right away. Instead, write a standalone Python program that does what you want, then convert it to a Sugar Activity, being sure to keep a copy of the non-Sugarized version around for future use. There are several reasons for this, but the chief one is that standalone programs are easier to test, especially if you are not currently a Linux user. A standalone Python program can run anywhere, but a Sugar Activity really needs Sugar running on top of Linux. You can run your standalone Python program on an XO using the Terminal Activity.<br />
<br />
When I add new features to my Sugar Activities I generally try to get the feature working on the standalone version first. I did this with text to speech in Read Etexts, for instance. This was useful because when I ran into problems I had a standalone app I could send to the speech-dispatcher mailing list so they could easily recreate my problem.<br />
<br />
* You'll want a good code-highlighting editor that understands Python. A couple of good ones:<br />
:* Eric: http://eric-ide.python-projects.org/eric4-download.html<br />
:* Gedit: http://projects.gnome.org/gedit/<br />
:These are a bit more complicated to install than typical Windows programs. They are included in every Linux distribution, though.<br />
<br />
* To make and test a Sugarized Activity you really should have a Linux distribution installed. The best for this purpose is probably Fedora, which includes the latest Sugar environment, eric, gedit, Python, pygame, PyGTK, a tool for making SVG icons, and lots of other useful stuff. You can run Linux on the same computer as Windows (by partitioning your hard drive, something the Fedora installer will do for you) and choose which one you want to run at boot time. Fedora is no more difficult to install than Windows is, even if you want to run it and Windows on the same machine, and will run on hardware that would be inadequate for current versions of Windows. A Pentium III with 256 meg of RAM and a few gig of hard disk is more than adequate for Sugar development.<br />
<br />
* If you don't want to have anything to do with Linux, you ''could'' make a standalone Python program and find a collaborator to Sugarize it for you. You could also attempt to develop your Activity using Sugar on a Stick, or an actual XO, but this would probably be more trouble than simply installing Fedora 10.<br />
<br />
Feel free to ignore any of this advice if it doesn't seem applicable. I hope that you'll find it gives you a place to start.<br />
<br />
See also: [[Activity_Team/Resources]] , [[Activity_Team/Modifing_an_Activity]] and [[Activities/Turtle_Art/Patching]]<br />
<br />
==Additional tips and common "gotchas"==<br />
<br />
* Don't use punctuation in your bundle_id, e.g. org.sugarlabs.my-activity-name is not a valid bundle name. Use CamelCase instead: org.sugarlabs.MyActivityName<br />
* Follow the [http://wiki.laptop.org/go/Rainbow Rainbow] guidelines.<br />
: On OLPC-XOs, you can test with Rainbow disabled by removing /etc/olpc-security<br />
rm /etc/olpc-security<br />
: Reënable Rainbow by touching /etc/olpc-security<br />
touch /etc/olpc-security</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team&diff=93791Activity Team2014-12-02T18:17:13Z<p>Ignacio Rodríguez: /* Problems logging in to Gitorious? */ <- NO problemas with GitHub.</p>
<hr />
<div><noinclude><div class="noprint">{{TeamHeader|Activity Team}}</div></noinclude><br />
<br />
==Mission==<br />
<br />
{{:Activity Team/Mission}}<br />
<br />
==Tips for Activity Developers==<br />
<br />
=== Ask your 'newbie' question on-line ===<br />
<br />
Join [http://en.wikipedia.org/wiki/IRC IRC] channel [irc://irc.freenode.net/sugar #sugar] (e.g. via [http://webchat.freenode.net/?randomnick=1&prompt=1&channels=sugar web client]) and ask your question about activity, or sugar core, development process. Also browse chat [http://meeting.sugarlabs.org/sugar logs].<br />
<br />
=== Creating a new activity ===<br />
<br />
See [[Activity Team/Creating a New Activity|Creating a New Activity]] and [[Activity Team/Resources|Activity Team Resources]].<br />
<br />
=== Automated Testing ===<br />
<br />
See [[Automated Activity Testing]]<br />
<br />
===Port to GTK3===<br />
<br />
We have hints on [[Features/GTK3/Porting|porting from GTK2 to GTK3]].<br />
<br />
===Move an activity===<br />
<br />
We need help moving activities over to Sugar Labs from OLPC's servers. This is a great way to get started helping out the Activity Team. See [[Activity Team/How_to_migrate_from_OLPC]] for instructions, and [[Activity Team/Activity Status]] for the list of activities that need to be moved.<br />
<br />
While moving activities, it would be great to check that the .pot files are up to date and the MANIFEST is correct. This will really help out the distro packagers.<br />
<br />
===Cross-platform compatibility===<br />
<br />
As Sugar is integrated into more distros and the hardware base expands, it is important to keep Activity developers informed of any issues they need be aware of. For example, when Sugar was only expected to run on the XO-1 laptop, it was safe to assume that the display was always 1200x900. <br />
<br />
The [[Activity Team/Compatibility Tips|Compatibility Tips]] page is a place to accumulate tips.<br />
<br />
===Migrating from GTK2 to GTK3===<br />
<br />
The Sugar platform is migrating from GTK2 to GTK3 to stay relevant with upstream changes and benefit from their efforts. Sugar 0.96 (available in OLPC 12.1 development builds) includes support for a transition period, where both GTK2 and GTK3 activities can coexists, but new Sugar features will only be added to the GTK3 toolkit (e.g. improvements in touchscreen support). Have a read through the [http://wiki.sugarlabs.org/go/Features/GTK3/Porting migration notes], and the [http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html GTK3 Python tutorials] to get a feel for how things need to be changed. New activities should be developed with GTK3, unless you need to support an existing deployment today using an older build.<br />
<br />
===Modify Activities===<br />
<br />
A guide has been written describing how to make simple modifications to popular Sugar activities. Examples include adding sounds to TamTam, blocks to TurtleArt, buttons to Calculate, etc.<br />
<br />
* [[Activity Team/Modifying an Activity]]<br />
<br />
===Remote control your XO===<br />
<br />
[[Activity Team/Remote control your XO|Remote control your XO]] from your development machine can be handy while developing an activity.<br />
<br />
===Internationalization===<br />
<br />
We use '''[http://docs.python.org/library/gettext.html gettext]''' to internationalize activities. The basic steps are:<br />
<br />
In your Python code:<br />
from gettext import gettext as _<br />
<br />
Hence forth, encapsulate strings that you want translated in _():<br />
_('string to be translated')<br />
<br />
Run <code>setup.py</code> to generate a POT file for your project. This file will contain a reference to all of the encapsulated strings.<br />
<br />
From here, you need to:<br />
# <code>git add</code>, <code>commit</code>, and <code>push</code> the POT file to git<br />
# request that your project be added to the pootle server (by filing a task to the localization component on bugs.sugarlabs.org)<br />
# add pootle as a committer to your project on gitorious<br />
<br />
Once translations are committed to your project:<br />
# do a <code>git pull</code> to get a local copy of the .po files<br />
# run <code>setup.py fix_manifest</code> to create the .mo files used at run time<br />
Details can be found on the [[Translation Team/i18n Best Practices]] page.<br />
<br />
===General overview of git===<br />
<br />
Read the brief overview below but then '''start''' with our <br />
* [[Activity Team/Git Tutorial|git tutorial]].<br />
<br />
====glossary====<br />
<br />
;VCS: Version Control System &mdash; keeps track of changes to a set of files.<br />
;git: the distributed VCS used by Sugar Labs<br />
;commit: set of changes to files tracked by a VCS, accompanied by metadata (author, description, etc.)<br />
;diff/patch: (usually textual) representation of changes. These are also the names of specific tools used to create/apply these representations of changes.<br />
;repository: storage place for commits, usually of a certain piece of software<br />
;gitorious: software for hosting git repositories, including a web interface for administration<br />
;git.sugarlabs.org: server hosted by Sugar Labs running gitorious<br />
<br />
====Setup====<br />
(Once per machine you're working on)<br />
git clone git://github.com/whatever/mainline.git whatever<br />
<br />
====Regular usage====<br />
cd whatever<br />
[hack away and test your changes]<br />
git diff<br />
[review your changes, go back to hacking if you notice a mistake]<br />
git status<br />
git add NameOfNewFile # if you created any file you want included<br />
git commit -a<br />
[describe your changes - by convention the first line is a summary and the remaining lines are long description]<br />
[start again at hacking if you're offline]<br />
git log origin/master..master # shows you all commits not pushed yet<br />
git push # if/once you are online<br />
<br />
Git offers a lot more commands and features that can make your life<br />
easier, but it's best to start off small and use only those mentioned<br />
above. It's very easy to get confused if you're unfamiliar with git.<br />
<br />
Even if you use the more advanced features, git does a pretty good job at<br />
allowing you to recover from your mistakes.<br />
So if you ever mess up and don't know how to fix it yourself, please<br />
stop (at least for me that's usually the hardest part ;) ), try to<br />
recollect the exact sequence of actions (e.g. from shell history) and ask<br />
for help.<br />
<br />
----<br />
<br />
Once you have [[Activity Team/How_to_migrate_from_OLPC|migrated]] your project, you may have some more detailed [[Activity Team/Git FAQ|questions regarding how Sugar Labs uses git]], particularly in regard to patch management.<br />
<br />
----<br />
<br />
{{:Activity Team/Git}}<br />
<br />
== Maintainers ==<br />
<br />
{{:Activity Team/Maintainers}}<br />
<br />
== Testers ==<br />
<br />
Please see the [[Features/Soas_V4/ASLOxo_Activity_Test_Table|Activity Test-table page]] for tester information.<br />
<br />
== Background information ==<br />
<br />
=== Sugar Activities ===<br />
<br />
There is an [[Activities]] page where we highlight Sugar activities in the wiki. (We need to discuss how best to manage the content of this page as well as how to manage the activity-specific sub-pages.)<br />
<br />
===Sugar [[Human Interface Guidelines]]===<br />
<br />
The [[Human_Interface_Guidelines|Sugar Human Interface Guidelines]] content has also been migrated to Sugar Labs. This guide is a critical resource when designing activities. <br />
: An [[Activity Team/Project Ideas#Activity HIG|Activity HIG]] discussion<br />
<br />
===Sugar Almanac===<br />
<br />
The [[Development Team/Almanac|Sugar Almanac]] content has been migrated to Sugar Labs. It's a great, quick reference when building python Activities.<br />
<br />
===activities.sugarlabs.org===<br />
<br />
The [http://activities.sugarlabs.org Sugar Activity Library] is our user-facing portal for Sugar activities. The site uses the back-end Mozilla built for Firefox and Thunderbird extensions at addons.mozilla.org, called Remora. To help out, check out [[Activity Library]].<br />
<br />
===sugar-widgets library===<br />
<br />
See [[Development Team/sugar-port]].<br />
<br />
===sugar-sprites library===<br />
<br />
See [[Activity Team/Sugar-sprites]]<br />
<br />
== Misc. ==<br />
<br />
===Mime types and file suffixes===<br />
<br />
You can associate your activity with mime types by including a mime_types entry in the activity/activity.info file; e.g.<br />
<br />
mime_types = text/plain;text/x-python;text/x-logo;text/x-svg;application/xml;text/html;text/xml;image/svg+xml<br />
<br />
You can associate your activity with a file suffix by including a mimetypes.xml file in your activity subdirectory:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"><br />
<mime-type type="application/x-turtle-art"><br />
<comment xml:lang="en">Turtle Art</comment><br />
<glob pattern="*.ta"/><br />
</mime-type><br />
</mime-info><br />
<br />
'''Note:''' You cannot just copy your activity into the ~/Activities directory. You have to install it as a .xo bundle or using 'setup.py install' (note that the latter is tricky as the command might get your paths messed up). This installation step will create a file --> ~/.local/share/mime/packages/<your-bundle_id>.xml<br />
<br />
If your activity does not register any mimetype, then it won't matter.<br />
<br />
If your activity was already properly installed (with sugar-install-bundle), then copying new source into Activities will not be affected by this problem unless the new source registers a new mimetype that the old source did not.<br />
<br />
=== Activity Team users on activities.sugarlabs.org ===<br />
<br />
Fake emails to identify users:<br />
* ''activity.team@sugarlabs.org'' activities that are supported by Activity Team<br />
* ''trash@dev.null'' activities to remove<br />
<br />
===setup.py===<br />
<br />
There is a handy utility that is a standard part of Sugar Activity bundles, setup.py. You should use it to create and update POT files, generate a MANIFEST file and update locale files, and create .xo and .tar files for distribution.<br />
<br />
./setup.py genpot # generates or updates the POT file used by gettext for internationalization<br />
./setup.py build<br />
./setup.py fix_manifest # updates the MANIFEST file and generates or updates the locale files used for internationalization<br />
./setup.py dist_xo # creates an .xo bundle from your project<br />
./setup.py dist_source # creates a .tar.gz file from your project<br />
<br />
===Packaging activities discussion=== <br />
<br />
We are currently discussing how to package activities in the future, in order to support all distributions. Please add your comments to the following pages.<br />
* [[Activity Team/Packaging|Packaging]]<br />
** should we remove "Activities" section from that page; all issues where moved to Activity_Status page [[User:Alsroot|alsroot]] 10:33, 16 January 2009 (UTC)<br />
* [[Activity Team/Packaging Ideas|Packaging ideas]]<br />
<br />
=== The Sugar Control Panel ===<br />
<br />
While not strictly in the realm of Activities, it may be useful on occasion to add a section to the Sugar Control Panel. [[Activity Team/Control Panel|Things to keep in mind]].<br />
<br />
=== A typical update cycle ===<br />
<br />
Anyone can contribute a patch to a Sugar Activity. The typical work cycle involves an interaction with the activity (project) maintainer as follows:<br />
# make a clone (anyone)<br />
# make your changes (anyone)<br />
# mail your patch to sugar_devel (anyone)<br />
# make changes as per suggestions by the project maintainer and developer community (anyone)<br />
# push your changes (anyone)<br />
# request a merge (anyone)<br />
# write release notes (anyone)<br />
# tag the new version in git (project maintainer)<br />
# create the .xo and .tar files (project maintainer)<br />
# upload .tar to download.sugarlabs.org (project maintainer)<br />
# upload .xo to activities.sugarlabs.org (project maintainer)<br />
# update wiki documentation (anyone)<br />
<br />
=== OLPC XO game buttons ===<br />
<br />
The game buttons on the OLPC XO are accessible:<br />
* The left-side buttons map to KP_Up, KP_Right, KP_Down, and KP_Left<br />
* The right-side buttons map to KP_Page_Up (o), KP_End (✓), KP_Page_Down (×), and KP_Home (◽)<br />
<br />
=== The Sugar Object Chooser ===<br />
<br />
The Object Chooser is the activity-level user interface to the Journal. Examples and caveats are found [[Activity_Team/Object_Chooser|here]].<br />
<br />
==[[Activity Team/Project Ideas|Project Ideas]]==<br />
<br />
The Activity Team always needs project ideas and suggestions. Post your ideas to [[Activity Team/Project Ideas]]. <br />
<br />
If you see something here you would like to help with, please [[Activity Team/Contacts|contact us]].<br />
<br />
[[User:Wade|Wade]] 17:19, 13 January 2009 (UTC)<br />
<br />
==Additional resources==<br />
<br />
Additional resources may be found [[Activity_Team/Resources|here]].<br />
<br />
==Sugar Activity development courses==<br />
<br />
There are university- and secondary-school-level courses being taught around Sugar development. Several of the syllabi are on line:<br />
<br />
* http://wiki.paraguayeduca.org/index.php/Curso_Sugar_FPUNA is being adapted by UNA<br />
* http://teachingopensource.org/index.php/RIT/The_Course is being taught at RIT<br />
<br />
==Meetings==<br />
<br />
Please check [[/Meetings]] for meeting schedules/logs. <br />
<br />
== Moving to Sugar Labs ==<br />
<br />
A few notes re moving to the Sugar Labs infrastructure:<br />
<br />
* use git init to create a new project unless it already exists.<br />
* use <code>setup.py dist_source</code> to make the source package associated with your project.<br />
* source packages now go in:<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/<br />
<br />
: from there, if your project (if it is an Activity) probably belongs in the honey subdirectory, e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/honey/Abacus/<br />
<br />
: If your project is part of the Sugar core, it goes in sucrose/fructose/ (for core Activities) or sucrose/glucose (for core modules), e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/fructore/TurtleArt/<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/glucose/sugar-toolkit/<br />
<br />
* don't forget to update addons as well!!<br />
activities.sugarlabs.org<br />
<br />
* and to copy the tar file to download.sugarlabs.org<br />
download.sugarlabs.org:/download/sources/honey/...<br />
download.sugarlabs.org:/download/sources/sucrose/fructose/...<br />
<br />
== Subpages ==<br />
{{Special:PrefixIndex/{{PAGENAME}}/}}<br />
<br />
[[Category:Activity Team]]<br />
[[Category:Team]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Activity_Team&diff=93790Activity Team2014-12-02T18:16:30Z<p>Ignacio Rodríguez: /* Setup */ -> Github</p>
<hr />
<div><noinclude><div class="noprint">{{TeamHeader|Activity Team}}</div></noinclude><br />
<br />
==Mission==<br />
<br />
{{:Activity Team/Mission}}<br />
<br />
==Tips for Activity Developers==<br />
<br />
=== Ask your 'newbie' question on-line ===<br />
<br />
Join [http://en.wikipedia.org/wiki/IRC IRC] channel [irc://irc.freenode.net/sugar #sugar] (e.g. via [http://webchat.freenode.net/?randomnick=1&prompt=1&channels=sugar web client]) and ask your question about activity, or sugar core, development process. Also browse chat [http://meeting.sugarlabs.org/sugar logs].<br />
<br />
=== Creating a new activity ===<br />
<br />
See [[Activity Team/Creating a New Activity|Creating a New Activity]] and [[Activity Team/Resources|Activity Team Resources]].<br />
<br />
=== Automated Testing ===<br />
<br />
See [[Automated Activity Testing]]<br />
<br />
=== Problems logging in to Gitorious? ===<br />
<br />
Gitorious users are sometimes having their IP addresses incorrectly blacklisted at http://git.sugarlabs.org/. If your SSH key is rejected with the error "Access denied or bad repository path", please open a ticket by emailing git AT sugarlabs DOT org.<br />
<br />
===Port to GTK3===<br />
<br />
We have hints on [[Features/GTK3/Porting|porting from GTK2 to GTK3]].<br />
<br />
===Move an activity===<br />
<br />
We need help moving activities over to Sugar Labs from OLPC's servers. This is a great way to get started helping out the Activity Team. See [[Activity Team/How_to_migrate_from_OLPC]] for instructions, and [[Activity Team/Activity Status]] for the list of activities that need to be moved.<br />
<br />
While moving activities, it would be great to check that the .pot files are up to date and the MANIFEST is correct. This will really help out the distro packagers.<br />
<br />
===Cross-platform compatibility===<br />
<br />
As Sugar is integrated into more distros and the hardware base expands, it is important to keep Activity developers informed of any issues they need be aware of. For example, when Sugar was only expected to run on the XO-1 laptop, it was safe to assume that the display was always 1200x900. <br />
<br />
The [[Activity Team/Compatibility Tips|Compatibility Tips]] page is a place to accumulate tips.<br />
<br />
===Migrating from GTK2 to GTK3===<br />
<br />
The Sugar platform is migrating from GTK2 to GTK3 to stay relevant with upstream changes and benefit from their efforts. Sugar 0.96 (available in OLPC 12.1 development builds) includes support for a transition period, where both GTK2 and GTK3 activities can coexists, but new Sugar features will only be added to the GTK3 toolkit (e.g. improvements in touchscreen support). Have a read through the [http://wiki.sugarlabs.org/go/Features/GTK3/Porting migration notes], and the [http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html GTK3 Python tutorials] to get a feel for how things need to be changed. New activities should be developed with GTK3, unless you need to support an existing deployment today using an older build.<br />
<br />
===Modify Activities===<br />
<br />
A guide has been written describing how to make simple modifications to popular Sugar activities. Examples include adding sounds to TamTam, blocks to TurtleArt, buttons to Calculate, etc.<br />
<br />
* [[Activity Team/Modifying an Activity]]<br />
<br />
===Remote control your XO===<br />
<br />
[[Activity Team/Remote control your XO|Remote control your XO]] from your development machine can be handy while developing an activity.<br />
<br />
===Internationalization===<br />
<br />
We use '''[http://docs.python.org/library/gettext.html gettext]''' to internationalize activities. The basic steps are:<br />
<br />
In your Python code:<br />
from gettext import gettext as _<br />
<br />
Hence forth, encapsulate strings that you want translated in _():<br />
_('string to be translated')<br />
<br />
Run <code>setup.py</code> to generate a POT file for your project. This file will contain a reference to all of the encapsulated strings.<br />
<br />
From here, you need to:<br />
# <code>git add</code>, <code>commit</code>, and <code>push</code> the POT file to git<br />
# request that your project be added to the pootle server (by filing a task to the localization component on bugs.sugarlabs.org)<br />
# add pootle as a committer to your project on gitorious<br />
<br />
Once translations are committed to your project:<br />
# do a <code>git pull</code> to get a local copy of the .po files<br />
# run <code>setup.py fix_manifest</code> to create the .mo files used at run time<br />
Details can be found on the [[Translation Team/i18n Best Practices]] page.<br />
<br />
===General overview of git===<br />
<br />
Read the brief overview below but then '''start''' with our <br />
* [[Activity Team/Git Tutorial|git tutorial]].<br />
<br />
====glossary====<br />
<br />
;VCS: Version Control System &mdash; keeps track of changes to a set of files.<br />
;git: the distributed VCS used by Sugar Labs<br />
;commit: set of changes to files tracked by a VCS, accompanied by metadata (author, description, etc.)<br />
;diff/patch: (usually textual) representation of changes. These are also the names of specific tools used to create/apply these representations of changes.<br />
;repository: storage place for commits, usually of a certain piece of software<br />
;gitorious: software for hosting git repositories, including a web interface for administration<br />
;git.sugarlabs.org: server hosted by Sugar Labs running gitorious<br />
<br />
====Setup====<br />
(Once per machine you're working on)<br />
git clone git://github.com/whatever/mainline.git whatever<br />
<br />
====Regular usage====<br />
cd whatever<br />
[hack away and test your changes]<br />
git diff<br />
[review your changes, go back to hacking if you notice a mistake]<br />
git status<br />
git add NameOfNewFile # if you created any file you want included<br />
git commit -a<br />
[describe your changes - by convention the first line is a summary and the remaining lines are long description]<br />
[start again at hacking if you're offline]<br />
git log origin/master..master # shows you all commits not pushed yet<br />
git push # if/once you are online<br />
<br />
Git offers a lot more commands and features that can make your life<br />
easier, but it's best to start off small and use only those mentioned<br />
above. It's very easy to get confused if you're unfamiliar with git.<br />
<br />
Even if you use the more advanced features, git does a pretty good job at<br />
allowing you to recover from your mistakes.<br />
So if you ever mess up and don't know how to fix it yourself, please<br />
stop (at least for me that's usually the hardest part ;) ), try to<br />
recollect the exact sequence of actions (e.g. from shell history) and ask<br />
for help.<br />
<br />
----<br />
<br />
Once you have [[Activity Team/How_to_migrate_from_OLPC|migrated]] your project, you may have some more detailed [[Activity Team/Git FAQ|questions regarding how Sugar Labs uses git]], particularly in regard to patch management.<br />
<br />
----<br />
<br />
{{:Activity Team/Git}}<br />
<br />
== Maintainers ==<br />
<br />
{{:Activity Team/Maintainers}}<br />
<br />
== Testers ==<br />
<br />
Please see the [[Features/Soas_V4/ASLOxo_Activity_Test_Table|Activity Test-table page]] for tester information.<br />
<br />
== Background information ==<br />
<br />
=== Sugar Activities ===<br />
<br />
There is an [[Activities]] page where we highlight Sugar activities in the wiki. (We need to discuss how best to manage the content of this page as well as how to manage the activity-specific sub-pages.)<br />
<br />
===Sugar [[Human Interface Guidelines]]===<br />
<br />
The [[Human_Interface_Guidelines|Sugar Human Interface Guidelines]] content has also been migrated to Sugar Labs. This guide is a critical resource when designing activities. <br />
: An [[Activity Team/Project Ideas#Activity HIG|Activity HIG]] discussion<br />
<br />
===Sugar Almanac===<br />
<br />
The [[Development Team/Almanac|Sugar Almanac]] content has been migrated to Sugar Labs. It's a great, quick reference when building python Activities.<br />
<br />
===activities.sugarlabs.org===<br />
<br />
The [http://activities.sugarlabs.org Sugar Activity Library] is our user-facing portal for Sugar activities. The site uses the back-end Mozilla built for Firefox and Thunderbird extensions at addons.mozilla.org, called Remora. To help out, check out [[Activity Library]].<br />
<br />
===sugar-widgets library===<br />
<br />
See [[Development Team/sugar-port]].<br />
<br />
===sugar-sprites library===<br />
<br />
See [[Activity Team/Sugar-sprites]]<br />
<br />
== Misc. ==<br />
<br />
===Mime types and file suffixes===<br />
<br />
You can associate your activity with mime types by including a mime_types entry in the activity/activity.info file; e.g.<br />
<br />
mime_types = text/plain;text/x-python;text/x-logo;text/x-svg;application/xml;text/html;text/xml;image/svg+xml<br />
<br />
You can associate your activity with a file suffix by including a mimetypes.xml file in your activity subdirectory:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"><br />
<mime-type type="application/x-turtle-art"><br />
<comment xml:lang="en">Turtle Art</comment><br />
<glob pattern="*.ta"/><br />
</mime-type><br />
</mime-info><br />
<br />
'''Note:''' You cannot just copy your activity into the ~/Activities directory. You have to install it as a .xo bundle or using 'setup.py install' (note that the latter is tricky as the command might get your paths messed up). This installation step will create a file --> ~/.local/share/mime/packages/<your-bundle_id>.xml<br />
<br />
If your activity does not register any mimetype, then it won't matter.<br />
<br />
If your activity was already properly installed (with sugar-install-bundle), then copying new source into Activities will not be affected by this problem unless the new source registers a new mimetype that the old source did not.<br />
<br />
=== Activity Team users on activities.sugarlabs.org ===<br />
<br />
Fake emails to identify users:<br />
* ''activity.team@sugarlabs.org'' activities that are supported by Activity Team<br />
* ''trash@dev.null'' activities to remove<br />
<br />
===setup.py===<br />
<br />
There is a handy utility that is a standard part of Sugar Activity bundles, setup.py. You should use it to create and update POT files, generate a MANIFEST file and update locale files, and create .xo and .tar files for distribution.<br />
<br />
./setup.py genpot # generates or updates the POT file used by gettext for internationalization<br />
./setup.py build<br />
./setup.py fix_manifest # updates the MANIFEST file and generates or updates the locale files used for internationalization<br />
./setup.py dist_xo # creates an .xo bundle from your project<br />
./setup.py dist_source # creates a .tar.gz file from your project<br />
<br />
===Packaging activities discussion=== <br />
<br />
We are currently discussing how to package activities in the future, in order to support all distributions. Please add your comments to the following pages.<br />
* [[Activity Team/Packaging|Packaging]]<br />
** should we remove "Activities" section from that page; all issues where moved to Activity_Status page [[User:Alsroot|alsroot]] 10:33, 16 January 2009 (UTC)<br />
* [[Activity Team/Packaging Ideas|Packaging ideas]]<br />
<br />
=== The Sugar Control Panel ===<br />
<br />
While not strictly in the realm of Activities, it may be useful on occasion to add a section to the Sugar Control Panel. [[Activity Team/Control Panel|Things to keep in mind]].<br />
<br />
=== A typical update cycle ===<br />
<br />
Anyone can contribute a patch to a Sugar Activity. The typical work cycle involves an interaction with the activity (project) maintainer as follows:<br />
# make a clone (anyone)<br />
# make your changes (anyone)<br />
# mail your patch to sugar_devel (anyone)<br />
# make changes as per suggestions by the project maintainer and developer community (anyone)<br />
# push your changes (anyone)<br />
# request a merge (anyone)<br />
# write release notes (anyone)<br />
# tag the new version in git (project maintainer)<br />
# create the .xo and .tar files (project maintainer)<br />
# upload .tar to download.sugarlabs.org (project maintainer)<br />
# upload .xo to activities.sugarlabs.org (project maintainer)<br />
# update wiki documentation (anyone)<br />
<br />
=== OLPC XO game buttons ===<br />
<br />
The game buttons on the OLPC XO are accessible:<br />
* The left-side buttons map to KP_Up, KP_Right, KP_Down, and KP_Left<br />
* The right-side buttons map to KP_Page_Up (o), KP_End (✓), KP_Page_Down (×), and KP_Home (◽)<br />
<br />
=== The Sugar Object Chooser ===<br />
<br />
The Object Chooser is the activity-level user interface to the Journal. Examples and caveats are found [[Activity_Team/Object_Chooser|here]].<br />
<br />
==[[Activity Team/Project Ideas|Project Ideas]]==<br />
<br />
The Activity Team always needs project ideas and suggestions. Post your ideas to [[Activity Team/Project Ideas]]. <br />
<br />
If you see something here you would like to help with, please [[Activity Team/Contacts|contact us]].<br />
<br />
[[User:Wade|Wade]] 17:19, 13 January 2009 (UTC)<br />
<br />
==Additional resources==<br />
<br />
Additional resources may be found [[Activity_Team/Resources|here]].<br />
<br />
==Sugar Activity development courses==<br />
<br />
There are university- and secondary-school-level courses being taught around Sugar development. Several of the syllabi are on line:<br />
<br />
* http://wiki.paraguayeduca.org/index.php/Curso_Sugar_FPUNA is being adapted by UNA<br />
* http://teachingopensource.org/index.php/RIT/The_Course is being taught at RIT<br />
<br />
==Meetings==<br />
<br />
Please check [[/Meetings]] for meeting schedules/logs. <br />
<br />
== Moving to Sugar Labs ==<br />
<br />
A few notes re moving to the Sugar Labs infrastructure:<br />
<br />
* use git init to create a new project unless it already exists.<br />
* use <code>setup.py dist_source</code> to make the source package associated with your project.<br />
* source packages now go in:<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/<br />
<br />
: from there, if your project (if it is an Activity) probably belongs in the honey subdirectory, e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/honey/Abacus/<br />
<br />
: If your project is part of the Sugar core, it goes in sucrose/fructose/ (for core Activities) or sucrose/glucose (for core modules), e.g.,<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/fructore/TurtleArt/<br />
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/glucose/sugar-toolkit/<br />
<br />
* don't forget to update addons as well!!<br />
activities.sugarlabs.org<br />
<br />
* and to copy the tar file to download.sugarlabs.org<br />
download.sugarlabs.org:/download/sources/honey/...<br />
download.sugarlabs.org:/download/sources/sucrose/fructose/...<br />
<br />
== Subpages ==<br />
{{Special:PrefixIndex/{{PAGENAME}}/}}<br />
<br />
[[Category:Activity Team]]<br />
[[Category:Team]]</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Google_Code_In_2014&diff=93511Google Code In 20142014-10-11T22:38:28Z<p>Ignacio Rodríguez: /* Sugar enhancements from bugs.sugarlabs.org */</p>
<hr />
<div><noinclude>[[Category:Trac Reference]][[Category:Idea]]<br />
[[Category: GCI2014]]</noinclude><br />
This is the project page for the Sugar Labs application to [http://www.google-melange.com/gci/homepage/google/gci2014 Google Code In 2014]. Sugar Labs community members: please feel free to add tasks below. We'll do an edit before final applications are due in late Oct 2014.<br />
<br />
== Message to potential participants ==<br />
<br />
It is important that you obtain permission of your parents.<br />
<br />
Es importante que obtengas el permiso de tus padres para participar.<br />
<br />
http://www.google-melange.com/gci/document/show/gci_program/google/gci2014/help_page#eligible<br />
<br />
Please see the Contest Rules for Eligibility and Registration process.<br />
<br />
http://www.google-melange.com/gci/document/show/gci_program/google/gci2014/terms_and_conditions<br />
<br />
'''Details regarding the required forms and paperwork are here: [[Google Code In 2014/Participate#Students]].'''<br />
<br />
Also, you will likely need to set up the Sugar development environment. See http://developer.sugarlabs.org/dev-environment.md.html for details. Further information about contributing to the project can be found here: http://developer.sugarlabs.org/<br />
<br />
Please don't hesitate to ask questions on our irc channel (#sugar on irc.freenode.net) or on the sugar-devel list: sugar-devel AT lists.sugarlabs DOT org<br />
<br />
== Why we are participating ==<br />
<br />
Sugar is written and maintained by volunteers, who range from seasoned professionals to children as young as 12-years of age. Children who have grown up with Sugar have transitioned from Sugar users to Sugar App developers to Sugar maintainers. They hang out on IRC with the global Sugar developer community and are full-fledged members of the Sugar development team. It is this latter group of children we hope will participate in and benefit from Google Code-in. Specifically we want to re-enforce the message that Sugar belongs to its users and that they have both ownership and the responsibility that ownership implies. Just as learning is not something done to you, but something you do, learning with Sugar ultimately means participating in the Sugar development process. At Sugar Labs, we are trying to bring the culture of Free Software into the culture of school. So the Code-in is not just an opportunity for us to get some tasks accomplished, it is quintessential to our overall mission.<br />
<br />
== Tasks ==<br />
'''Note:''' This is our preliminary list of tasks. We can add more as the contest progresses.<br />
<br />
Mentors: please feel free to add more tasks and/or add yourself as a potential mentor to an existing task.<br />
<br />
Tasks must fall within one of these five categories: [[#Documentation/Training]]; [[#Outreach/Research]]; [[#User Interface]]; [[#Quality Assurance]]; and [[#Code]].<br />
<br />
===Documentation/Training===<br />
Tasks related to creating/editing documents and helping others learn more<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===Outreach/Research===<br />
Tasks related to community management, outreach/marketing, or studying problems and recommending solutions<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===User Interface===<br />
Tasks related to user experience research or user interface design and interaction<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===Quality Assurance===<br />
Tasks related to testing and ensuring code is of high quality.<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===Code===<br />
Tasks related to writing or refactoring code<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|-<br />
| Sharing Palette Highlight Bug || GTK3 Sharing Palette does not highlight the current selected option. The palette should highlight the icon of the selected option. This worked fine in GTK2. You can test with Chat (gtk2) and Browse (gtk3). Ticket: http://bugs.sugarlabs.org/ticket/4467 Relevant code: gtk3 themes at github.com/sugarlabs/sugar-artwork || 48 || Bug, Sugar, GTK, Theme || UI, Code<br />
|-<br />
| Magic Tool For Paint || The kids want the magic tools from TuxPaint in the sugar Paint activity. The teachers in Uruguay say the kids like the magic tools from TuxPaint. Ticket: http://bugs.sugarlabs.org/ticket/2838 Relevant code: https://github.com/godiard/paint-activity || 72 || Feature, Magic, Paint, Activity || Code<br />
|-<br />
|| Clear Browse Cache on Crash || Browse cache can bloat up with time consuming valuable space on the laptop. On one laptop me and tch checked, there were 400MB of unaccessible files (mostly multimedia) in the Browse instance folder. We need a procedure to clean instance/ when starting browse (needs to check it is the only instance to avoid corner case of more than one browse instance). Another option is to check the date of partial files... Ticket: http://bugs.sugarlabs.org/ticket/2659#comment:6 Relevant code: https://github.com/sugarlabs/browse-activity || 48 || Browse, Activity, Bug, Cache || Code<br />
|-<br />
|| On Screen keyboard Covers Terminal || On terminal activity, the OSK is covering the text entry area. This means that they cannot be used in tablet (full-touch) mode, meaning that they cannot meet Objective #2487. Ticket: http://bugs.sugarlabs.org/ticket/4542 Relevant code: https://github.com/godiard/terminal-activity || 48 || Terminal, Bug, OSK, Touch, XO-Required, Activity || Code, UI<br />
|-<br />
|| Pippy does not load example if no tabs present || Steps: open pippy, close all tabs, open an example (any), nothing will happen and is confusing, the log shows an ugly error. Ticket: http://bugs.sugarlabs.org/ticket/4782 Relevant code: https://github.com/walterbender/Pippy || 48 || Pippy, Bug, Activity || Code<br />
|}<br />
<br />
== Unsorted tasks ==<br />
=== Sugar enhancements from bugs.sugarlabs.org ===<br />
Each of these open tickets is potential task-worthy.<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Ticket !! Description !! Type !! Component<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/362 362] || can't register with multiple school servers || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/381 381] || Neighbourhood view icons should be placed in a spatially repeatable way || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/806 806] || Activities list view is very similar to Journal view and users delete activities instead of journal entries || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1442 1442] || Reject activity bundles which require a newer version of Sugar || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1646 1646] || No way to force-close (kill) an activity || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3143 3143] || remove icon-slicer dependency || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4016 4016] || Touch: change brightness and mode || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4387 4387] || Style text handles context palette || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4581 4581] || Shift key on OSK looks the same in all modes || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4623 4623] || improve packaging of activities that rely on system level libraries|| enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4628 4628] || Sugar: need ui to connect to hidden networks || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4671 4671] || Add voice recognition || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4729 4729] || convert to new style gobject signal format || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4768 4768] || We should drop Palettes with Gtk.Menu implementation || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1843 1843] || Journal accesses USB devices on scrolling || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1471 1471] || Send a file to more than one person at a time || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2105 2105] || add a screensaver to Sugar || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2264 2264] || Network, forget, or remove as favourite || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2416 2416] || provide framework code for releasing resources while hidden || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2433 2433] || class Activity should setlocale || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2473 2473] || transfer entire data store entry, including arbitrary metadata || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2480 2480] || Journal file actions need progress/busy indication || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2869 2869] || Radio/wireless control should interact with rfkill || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3026 3026] || Time filter only cuts off the end of the list instead of offering disjunct time spans || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3028 3028] || Add modifier to take screenshot only with the canvas || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3209 3209] || Journal should support display of activity-specific badges || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3412 3412] || Use gtk_accelerator_parse() instead of egg for key handling || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3627 3627] || Installing an activity should show progress information || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3672 3672] || duplicate function in view source needs progress bar || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3826 3826] || Get supported audio and video mime types from gstreamer || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3829 3829] || Allow Sugar users to adjust clock time and date || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3856 3856] || Add other folders to Journal || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3876 3876] || Sugar needs method to force wifi network rescan || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3877 3877] || Sugar needs method to force Buddy/Shared Activities Network view update || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4257 4257] || Toolbar overflow button: add a better looking arrow || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4273 4273] || View Source: provide feedback for non text files || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4327 4327] || Language CP module displays combo text in 2nd preferred language|| enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4398 4398] || Toolkit: add MessageBox || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4614 4614] || sugar: implement preview on clipboard button for images || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4660 4660] || Keyboard shortcuts missing || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4675 4675] || Allow the user to select custom image for background with a button || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4681 4681] || Show icon indicating volume and brightness levels when corresponding button is pressed || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4702 4702] || File transfer does not show progress or completion || enhancement || Sugar<br />
|}<br />
<br />
=== Sugar bugs from bugs.sugarlabs.org ===<br />
Each of these open tickets is potential task-worthy.<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Ticket !! Description !! Type !! Component<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4307 4307] || clipboard.set_with_data/set_with_owner is not introspectable || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1549 1549] || Collaboration faults when resuming and then stopping a shared activity before connections are sucessfull || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2195 2195] || Control panel, timezone incorrectly calculated|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3326 3326] || Telepathy signals connected twice when connecting to jabber || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3833 3833] || Palettes on the bottom of screen don't appear after rotation to portrait mode || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3921 3921] || Journal palette is not updated when I stay in the same column || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4166 4166] || Long press timeout 'feels' longer than 0.5 seconds || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4330 4330] || Journal: start editing unwanted entry || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4343 4343] || Journal:Timeout to get the palette 'feels' really long || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4461 4461] || "Volume busy" dialog appear in Sugar || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4613 4613] || Neighborhood view should respect max_participants limit || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4709 4709] || MenuItem at times do not trigger activate signal || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4743 4743] || missing AU translations || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/305 305] || Checkbox/Radio button outline on black panel disappears in mouseover selection highlight || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/933 933] || Neighbourhood shared Activity title re-named by someone else re-joining || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1051 1051] || loads of get_file() invocations and short-lived file paths during activity installation || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1181 1181] || Registration should be async || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1429 1429] || Home view object's long titles aren't formated like everywhere else || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1490 1490] || home screen: "start new" behaviour not reset if non-<alt> modifier active while releasing <alt> || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1561 1561] || Most activities and Sugar itself chokes if the type of metadata returned is different from the expected one || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1936 1936] || sugar.datastore.datastore.find() breaks for large data stores || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2355 2355] || Neighborhood shows Jabber account id (hex_number@server.domain) instead of nick name|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2478 2478] || Buttons unresponsive when launching Sugar until Journal appears on Home View || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2503 2503] || View-source does not close when activity closes || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2525 2525] || Wrong query specification for datastore.find() || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2570 2570] || gdk window obscured events don't always happen || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2702 2702] || "Invite to <activity>" shown even for activities that don't support sharing || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2818 2818] || New/upgraded activities are added to Favourites View || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2822 2822] || Software Update selects new activities by default|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2957 2957] || handle lack of ALIASING and SIMPLE_PRESENCE || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2962 2962] || Rerigister on jabber server || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2963 2963] || Sugar telepathy code does not take into account presence status of buddies || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2967 2967] || Disable telepathy plugins on sugar shell level || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2978 2978] || Remove hierachy-changed signal handlers when not needed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2982 2982] || Reconnect to jabber server in CP even if it was not changed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2992 2992] || GSM palette 1 hour off || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3006 3006] || Ad-hoc network icon mixup || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3118 3118] || presence: shell is not notified when we quit Sugar || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3119 3119] || traceback after Sugar startup || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3146 3146] || Dragging a Journal entry drags the whole white entry bar, not just the icon || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3147 3147] || Hovering Home list view un-favorited star provides confusing feedback || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3172 3172] || traceback when associating to a new schoolserver || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3432 3432] || Your Journal is full screen displayed badly || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3433 3433] || Can't launch activities when disk is full || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3450 3450] || Activity.__init__(..., create_jobject=False) broken || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3601 3601] || Reword "Create a connection in the control panel.", to use My Settings || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3646 3646] || Palette dissapears after some clicks || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3708 3708] || Sugar doesn't DHCP connecting to ad-hoc wifi point || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3748 3748] || Presence not updated, when client disconencts from telepathy-salut || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3796 3796] || sugar-toolkit-gtk3: Drag and drop in color button || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3831 3831] || Frame: animation has regressed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3930 3930] || Sidebar clipboard content tooltip should render Unicode/HTML escapes safely (with no active links, etc.) || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3953 3953] || Sugar hover menus take a long time to appear on XO-1 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3974 3974] || Buttons: theme 'active' state correctly || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3996 3996] || Show frame or OSK, never both || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4000 4000] || Views: when Palette is up you can not switch views || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4023 4023] || Touch: Copy/paste palette for touch text selection || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4027 4027] || Sugar does not autoconfigure USB Ethernet network adapter || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4047 4047] || Journal should display specific icons for .xo and .xol bundles || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4058 4058] || GtkPaned can't be adjusted in touchscreen || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4060 4060] || Bad behaviour of gestures inside a ScrolledWindow || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4069 4069] || Browse: OSK not displayed in password entries || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4090 4090] || Style arrows || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4133 4133] || Gtk: some widgets do receive a GDK_CROSSING_UNGRAB leave event when tapped || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4134 4134] || Canvas auto panning based on input focus || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4150 4150] || Applications need to detect/adapt to OSK height when OSK height can vary || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4181 4181] || Research how should we use get_preferred_size || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4227 4227] || Touch long-press on a menu entry in a palette dismisses the palette with no action || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4238 4238] || Sliders hard to handle with touch || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4247 4247] || OSK over 'clear search' button || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4301 4301] || Frame: revisit buttons || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4310 4310] || Sometimes the frame gesture stops working || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4314 4314] || Frame Transfer tool button does not respond to touch || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4318 4318] || Frame clippings palette needs GTK3 theme updates || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4322 4322] || Modem palette data counters stuck at 0 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4329 4329] || Language CP module 2nd choice language can trigger right to left Sugar layout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4339 4339] || Journal model: traceback || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4358 4358] || Inactive next button on naming screen has no arrow || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4397 4397] || Fix ViewSource layout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4449 4449] || "Spanish" and other language names are not translated in My Settings language section || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4452 4452] || Partner icon does not appear in the frame || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4454 4454] || Error at exit activity after participate in collaboration || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4456 4456] || Bad activity name escaping in Network view || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4458 4458] || Can't reconnect to a shared activity || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4463 4463] || Collaboration palette can't be opened after press F1 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4467 4467] || GTK3: Sharing Palette does not highlight the current selected option || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4497 4497] || Html activity segfault on exit || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4547 4547] || OSK doesn't appeares when switched to tablet mode from laptop mode || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4646 4646] || Browse sometimes does not display text if scrolled by touchscreen || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4690 4690] || Journal: Palettes at the bottom of the list should reveal upwards || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4692 4692] || Journal: Alt+1 doesn't take screenshot if objects palette is opened || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4693 4693] || Send to friend not working || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4717 4717] || Error trying to open object palette in the journal|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4723 4723] || Activity launches even when pointer click is released outside of icon region || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4736 4736] || Can't find volume when external device remove || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4739 4739] || Errors when _Account._connection is lost || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4742 4742] || Use localed to set language in control panel || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4744 4744] || Sugar displays all languages including ones with no such translations. || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4756 4756] || Maximum Activities notification doesn't display || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4761 4761] || Tamtam activities fail to start in sugar0.100 running from sugar on a stick 10 installed on hard disk. || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4793 4793] || journal entry palette is hidden on release of long press || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/618 618] || jabber server name activated without user confirmation || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/634 634] || Dropdown panel highlight confusing on 'Encryption Type:' of 'Wireless Key Required' dialog || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1022 1022] || neighborhood view: new, matching AP not highlighted when view is filtered || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1151 1151] || connect to gabble immediately after registration || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1305 1305] || gtk.Image().set_from_icon_name() provides incorrectly scaled icon image || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1393 1393] || journal entry without a file is offered for transfer || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1624 1624] || gsm-client goes to infinite loop || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1674 1674] || change of encryption requirement on an access point prevents network connection || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1677 1677] || Speaker device not updated on external state changes|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1743 1743] || group view showing same activity multiple times || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1833 1833] || Journal: Preserve object title while copying ds object to clipboard || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1882 1882] || cannot connect to wireless network after restarting NetworkManager || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1976 1976] || School server registration works differently on XO|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2016 2016] || My Settings on top lost focus with popup || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2116 2116] || Keeping a text clipping, the copying to USB, ends up with a .doc extension || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2169 2169] || creating a DS entry is being done synchronously || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2267 2267] || Do we get the right file extension with mime.get_primary_extension(mime_type) ? || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2306 2306] || should not try to connect to a jabber server if no server is set in the control panel || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2308 2308] || shell listens unnecessarily for NameOwnerChanged signals || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2319 2319] || Resuming large file from external media doesn't work because of dbus timeout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2360 2360] || ActivityButton doesn't get garbage collected || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2958 2958] || Journal refresh with large number of entries may steal focus || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2964 2964] || Race condition while buddy initiation || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2974 2974] || Resuming journal entries may cause Sugar to falsely report failed activity launch || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3043 3043] || The first time, the network device icon in the frame is a gray circle || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3093 3093] || Time Zone reboot warning can be bypassed with a "cancelled" yet accepted change || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3138 3138] || Regression in startup animation when you resume from Journal || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3169 3169] || traces about not eing able to update a buddy || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3170 3170] || Sometimes the device icon in the frame and the icon in the neighborhood view are out of sync || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3204 3204] || Set the Sugar cursor in a non racy way || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3309 3309] || Journal: .doc file (type:application/msword) uses a data icon instead of a text icon || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3316 3316] || Wireless Modem error refers to Control Panel (not My Settings) || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3345 3345] || Detect speech libraries || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3378 3378] || When opening downloaded pdf in Read activity pulser not displayed correctly || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3544 3544] || Home random view: It shouldn't be possible to drag & drop icons over the XO character || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3600 3600] || cat process created by sugar-datastore not reaped if it is killed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3635 3635] || Activity icon in menu bar may jump in position when exiting activity || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3812 3812] || Journal detail view, text below the preview image can enlarge left column || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4098 4098] || FavoritesView: icon offset || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4140 4140] || It is possible to start Activities before the Journal is loaded || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4204 4204] || Journal detail view: Text selection handlers are shown while the Activity is loading || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4205 4205] || Icon below buddy on Home View shows a closed activity || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4229 4229] || Gamepad down arrow show and hide the OSK || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4261 4261] || No OSK in first boot, ebook mode || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4286 4286] || Traceback when drag and drop icons on random layout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4287 4287] || Bad volume saving behaviour when no sound device is found || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4393 4393] || WEP connections created in Sugar always use open authentication || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4412 4412] || Black drags in Browse/Wikipedia || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4437 4437] || Transfer palette not updating progress bar || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4575 4575] || OSK doesn't work in Date & Time CP applet search field || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4683 4683] || Active activity should move to first place in the list in the frame || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4722 4722] || sugar-install-bundle: fails to update activity list view after activity upgrade || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3962 3962] || GTK3 treeview root item styled with rounded corners|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4483 4483] || Clipboard regression in 13.2.0 images: set_with_data|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4780 4780] || CPU usage goes up significantly after The Frame UI is accessed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4781 4781] || please support upower >= 0.99 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4783 4783] || Sugar fails to install on Raspberry Pi (ARM6 - PiDora)|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4784 4784] || missing countries and providers data on 3G configuration || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4785 4785] || Browse-156 segfault on Fedora 18 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4787 4787] || Screen does not redraw till the mouse is moved || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4789 4789] || Collaboration does not work in SoaS f21-Alpha-RC1 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4791 4791] || Journal:wrong icon on external device || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4792 4792] || Journal: device palette position is wrong || defect || Sugar<br />
|}<br />
<br />
=== Enhancements from bugs.sugarlabs.org ===<br />
Each of these open tickets is potential task-worthy.<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Ticket !! Description !! Component<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/758 758] || Port to new tube API || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1124 1124] || Allow SoaS backup and restore from an XS server || Sugar on a Stick (SoaS)<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/971 971] || Global bookmarks in Browse || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1796 1796] || Proposed activity for best English-language learn-to-read website || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2373 2373] || add support for Object Chooser || Restore<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3132 3132] || Memorize should have latest speak update || Memorize<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3596 3596] || Browse: can not copy from inline pdf view or url entry || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4373 4373] || Memorize: save game state || Memorize<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4392 4392] || Chart should let the user to modify the chart font. || Chart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4472 4472] || 'Reject Suggestion' button is not working || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4708 4708] || portfolio should export ODP || Portfolio<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/946 946] || Can not download image when opened in a popup || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1554 1554] || support for resuming downloads || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1970 1970] || crossword-maker sugarization || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2361 2361] || Pippy fails to start if journal entry is corrupt || Pippy<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2740 2740] || Update list of people in Pippy Thanks example || Pippy<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2838 2838] || Paint: The kids want the magic tools from TuxPaint || Paint<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3494 3494] || Show points in Maze collaboration || Maze<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3495 3495] || Generate levels with holes || Maze<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4241 4241] || Read: support cbz and cbr files || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4291 4291] || Add Theorie to Pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4359 4359] || Add Level Tool to pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4484 4484] || Jukebox: add reorder c apability to playlist || Jukebox<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4584 4584] || Slider_puzzle activity to GTK+3 || SliderPuzzle<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4588 4588] || Chart activity: filter input to only accept valid values || Chart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4698 4698] || Enhancement: Pippy should have a dark grey background || Pippy<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/542 542] || UI improvements and channel tab issues || Irc<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/587 587] || XOIRC support for multiple servers || Irc<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/652 652] || Potential Journal Detail View improvements (Mock-up) || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/661 661] || need progress indication for jigsaw puzzle sharing || JigsawPuzzle<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/662 662] || Could reduce tubes code || JokeMachine<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/722 722] || Better notification for in activity events || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/773 773] || Add redirect from /wiki/ to /go/ || wiki.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/966 966] || Add SL navigation bar to ASLO main page || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1165 1165] || Tower of babble problem with IRC activity || Irc<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1289 1289] || lenguages available of activities on aslo || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1343 1343] || Labyrinth should have an 'export to text for outlining' feature || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1366 1366] || easier bug reporting || Log<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1459 1459] || Cartoon Characters should not scale image to fill the screen || CartoonBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1538 1538] || Socialcalc.po is not available in Pootle || SEETA<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1559 1559] || ASLO spanish redirection || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1649 1649] || calculate support for arabic numbers || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1705 1705] || All activity pages on ASLO should provide links to trac and git || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1756 1756] || Fetch activity title transaltion from submited bundle || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1780 1780] || TimeLapse-2 gives no progress output during Time Lapse Collection || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1829 1829] || [Labyrinth] Added New Label Support || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1847 1847] || Switch Record to gst camerabin plugin || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1973 1973] || Ticket to track Arabic bugs || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2047 2047] || SoaS has no "view source" keyboard shortcut || Sugar on a Stick (SoaS)<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2084 2084] || Pre-existing photos/videos not shared when making Record activity shared || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2110 2110] || Create Library Activity || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2118 2118] || DnD a link from Browse to the clipboard area of the Frame, should copy it || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2122 2122] || Measure sensor schematics || Measure<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2211 2211] || Words can only translate from english || Words<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2282 2282] || Don't require the user to experiment to find out what the color-selector icons are for || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2386 2386] || Calculate error point reporting || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2392 2392] || Allow more node and relationship attributes || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2438 2438] || For speed, Physics redraw should be based on dirty rects, not full screen updating || Physics<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2445 2445] || revise Soas boot menu; add entrys:"try soas without installing" "install to hard disk" with dfferent behaviors || Sugar on a Stick (SoaS)<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2530 2530] || Custom titles for audio recordings || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2557 2557] || Record UI Improvement || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2572 2572] || sharing logic is broken || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2594 2594] || Start a translation team for the Amazighe Language || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2634 2634] || Tux Paint cursor is not sugarized || TuxPaint<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2637 2637] || browse to save .ta files to Journal || wiki.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2679 2679] || Paste blocks fail gracefully on error || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2697 2697] || Calculate should use an appropriate number of significant figures for trigonometric functions || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2698 2698] || Calculate allows default variables to be redefined || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2701 2701] || Calculate should let you export plotted graphs to the clipboard || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2705 2705] || Chat should note when a continuous string of characters extends beyond the end of the screen || Chat<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2750 2750] || Ability to move pins/motors once placed || Physics<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2761 2761] || parallelize the execution of turtles || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2787 2787] || Port Chat to new PS API || Chat<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2831 2831] || unintuitive switch back to capture mode || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2902 2902] || Allow Distance UI to layout on a 800x480 display || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2908 2908] || Add a lunar phase calendar view || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2909 2909] || Add an overhead Earth, Moon, Sun view || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2910 2910] || Add option to export the moon phase as an image to the Journal || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2911 2911] || Add eclipse glyph to indicate the type of eclipse || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2912 2912] || Allow Poll Builder UI to layout on a 800x480 display || Poll<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2922 2922] || Share improvement on calendar || Calendario<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2923 2923] || Journal integration for Calendar || Calendario<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2939 2939] || Drumbeats / TamTam || TamTam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2988 2988] || When closing an unnammed activity, have option to erase it || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3110 3110] || Removable storage devices and in general entities with their own identities should have unique colors || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3111 3111] || Browse should have the option of allowing the user to only load text. || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3151 3151] || Add green line in Grid mode for terminator line || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3154 3154] || Discard does not discard game || Memorize<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3185 3185] || Hot key for journal not present in frame tool tip. || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3249 3249] || Should Sweets be mentioned as an option for non-tech users as well || wiki.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3287 3287] || Journal: Found way to have mini-icons in "Anything" combobox and "Resume with" palette show as a white stroke || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3289 3289] || Globally changing "Works with" entries || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3308 3308] || Could you release new version with pt translation? || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3393 3393] || Odd eToys L10n issue || Etoys<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3417 3417] || Spirolaterals should ask OLPC builds not to suspend while drawing || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3506 3506] || Chat should provide notification of new activity if scrollbar is not in the bottom position || Chat<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3523 3523] || Read use a prettier font for Epub || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3615 3615] || Add record or export to ogg buton to TamTamMini and TamTamJam || TamTam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3624 3624] || Calculate should save equations in history along with the generated plots || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3647 3647] || Hook up language control for l10n - migrated ticket || StoryBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3650 3650] || Add My Character and Add My Background || StoryBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3651 3651] || Collaboration functionality || StoryBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3693 3693] || Indiciate what architecture activities are for || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3735 3735] || Māori traditional instruments for TamTam || TamTam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3778 3778] || Load images when they are needed || TypingTurtle<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3881 3881] || Clock activity does not save state || Clock<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3882 3882] || Help activity does not save state || Help<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3897 3897] || Infoslicer needs to be able to help users go through Wiki disambiguation pages || InfoSlicer<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3966 3966] || Submit birthday on registration on SN server || sugar-client<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3978 3978] || FotoToon should have nice friendly help hint for new activity instances || FotoToon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3979 3979] || Meta ticket of Activities that overflow in portrait orientation (mainly toolbars) || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4043 4043] || Add convert to pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4086 4086] || fototune enhancement: export as video || FotoToon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4117 4117] || Touchscreen on screen keyboard || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4138 4138] || Write: enable spellchecking || Write<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4292 4292] || Add Conozco Elementos Químicos to Pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4349 4349] || Improve Turtleart discoverability in Gnome || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4362 4362] || Waterfall view in Measure.. || Measure<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4649 4649] || Turtleblocks sensor calibrations for V193 || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4677 4677] || Provide an option to specify number of frames || Flipsticks<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4697 4697] || Enhancement: Terminal should have a dark grey background and colored text || Terminal<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4699 4699] || when your name is typed, irc activity icon could have the badge emblem-notification.svg || IRC<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4724 4724] || GetBooks: keep the information of the downloaded books || GetBooks<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4738 4738] || Copy paste dosen't work in calculate, also Ctrl+a(for entire selection) dosen't work. || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4748 4748] || Develop should make bundle with Activity icon || Develop<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4774 4774] || Feature Request: Jump to action definition || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4786 4786] || Proposal for a Sugar installer app for GNOME default installer software || packages.sugarlabs.org<br />
|}<br />
<br />
== Mentors ==<br />
;NOTES TO MENTORS:<br />
:Please refer to [[Google Code In 2014/Participate#Mentors]] for details regarding enrolling as a mentor.<br />
:Please add yourself to the list below.<br />
:Feel free to add new tasks to the table above.<br />
<br />
Depending on the project, we will assign multiple mentors from our various development and support teams.<br />
<br />
* Walter Bender - also org admin for GCI</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Google_Code_In_2014&diff=93510Google Code In 20142014-10-11T14:16:09Z<p>Ignacio Rodríguez: /* Enhancements from bugs.sugarlabs.org */</p>
<hr />
<div><noinclude>[[Category:Trac Reference]][[Category:Idea]]<br />
[[Category: GCI2014]]</noinclude><br />
This is the project page for the Sugar Labs application to [http://www.google-melange.com/gci/homepage/google/gci2014 Google Code In 2014]. Sugar Labs community members: please feel free to add tasks below. We'll do an edit before final applications are due in late Oct 2014.<br />
<br />
== Message to potential participants ==<br />
<br />
It is important that you obtain permission of your parents.<br />
<br />
Es importante que obtengas el permiso de tus padres para participar.<br />
<br />
http://www.google-melange.com/gci/document/show/gci_program/google/gci2014/help_page#eligible<br />
<br />
Please see the Contest Rules for Eligibility and Registration process.<br />
<br />
http://www.google-melange.com/gci/document/show/gci_program/google/gci2014/terms_and_conditions<br />
<br />
'''Details regarding the required forms and paperwork are here: [[Google Code In 2014/Participate#Students]].'''<br />
<br />
Also, you will likely need to set up the Sugar development environment. See http://developer.sugarlabs.org/dev-environment.md.html for details. Further information about contributing to the project can be found here: http://developer.sugarlabs.org/<br />
<br />
Please don't hesitate to ask questions on our irc channel (#sugar on irc.freenode.net) or on the sugar-devel list: sugar-devel AT lists.sugarlabs DOT org<br />
<br />
== Why we are participating ==<br />
<br />
Sugar is written and maintained by volunteers, who range from seasoned professionals to children as young as 12-years of age. Children who have grown up with Sugar have transitioned from Sugar users to Sugar App developers to Sugar maintainers. They hang out on IRC with the global Sugar developer community and are full-fledged members of the Sugar development team. It is this latter group of children we hope will participate in and benefit from Google Code-in. Specifically we want to re-enforce the message that Sugar belongs to its users and that they have both ownership and the responsibility that ownership implies. Just as learning is not something done to you, but something you do, learning with Sugar ultimately means participating in the Sugar development process. At Sugar Labs, we are trying to bring the culture of Free Software into the culture of school. So the Code-in is not just an opportunity for us to get some tasks accomplished, it is quintessential to our overall mission.<br />
<br />
== Tasks ==<br />
'''Note:''' This is our preliminary list of tasks. We can add more as the contest progresses.<br />
<br />
Mentors: please feel free to add more tasks and/or add yourself as a potential mentor to an existing task.<br />
<br />
Tasks must fall within one of these five categories: [[#Documentation/Training]]; [[#Outreach/Research]]; [[#User Interface]]; [[#Quality Assurance]]; and [[#Code]].<br />
<br />
===Documentation/Training===<br />
Tasks related to creating/editing documents and helping others learn more<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===Outreach/Research===<br />
Tasks related to community management, outreach/marketing, or studying problems and recommending solutions<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===User Interface===<br />
Tasks related to user experience research or user interface design and interaction<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===Quality Assurance===<br />
Tasks related to testing and ensuring code is of high quality.<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===Code===<br />
Tasks related to writing or refactoring code<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|-<br />
| Sharing Palette Highlight Bug || GTK3 Sharing Palette does not highlight the current selected option. The palette should highlight the icon of the selected option. This worked fine in GTK2. You can test with Chat (gtk2) and Browse (gtk3). Ticket: http://bugs.sugarlabs.org/ticket/4467 Relevant code: gtk3 themes at github.com/sugarlabs/sugar-artwork || 48 || Bug, Sugar, GTK, Theme || UI, Code<br />
|-<br />
| Magic Tool For Paint || The kids want the magic tools from TuxPaint in the sugar Paint activity. The teachers in Uruguay say the kids like the magic tools from TuxPaint. Ticket: http://bugs.sugarlabs.org/ticket/2838 Relevant code: https://github.com/godiard/paint-activity || 72 || Feature, Magic, Paint, Activity || Code<br />
|-<br />
|| Clear Browse Cache on Crash || Browse cache can bloat up with time consuming valuable space on the laptop. On one laptop me and tch checked, there were 400MB of unaccessible files (mostly multimedia) in the Browse instance folder. We need a procedure to clean instance/ when starting browse (needs to check it is the only instance to avoid corner case of more than one browse instance). Another option is to check the date of partial files... Ticket: http://bugs.sugarlabs.org/ticket/2659#comment:6 Relevant code: https://github.com/sugarlabs/browse-activity || 48 || Browse, Activity, Bug, Cache || Code<br />
|-<br />
|| On Screen keyboard Covers Terminal || On terminal activity, the OSK is covering the text entry area. This means that they cannot be used in tablet (full-touch) mode, meaning that they cannot meet Objective #2487. Ticket: http://bugs.sugarlabs.org/ticket/4542 Relevant code: https://github.com/godiard/terminal-activity || 48 || Terminal, Bug, OSK, Touch, XO-Required, Activity || Code, UI<br />
|-<br />
|| Pippy does not load example if no tabs present || Steps: open pippy, close all tabs, open an example (any), nothing will happen and is confusing, the log shows an ugly error. Ticket: http://bugs.sugarlabs.org/ticket/4782 Relevant code: https://github.com/walterbender/Pippy || 48 || Pippy, Bug, Activity || Code<br />
|}<br />
<br />
== Unsorted tasks ==<br />
=== Sugar enhancements from bugs.sugarlabs.org ===<br />
Each of these open tickets is potential task-worthy.<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Ticket !! Description !! Type !! Component<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/362 362] || can't register with multiple school servers || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/381 381] || Neighbourhood view icons should be placed in a spatially repeatable way || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/806 806] || Activities list view is very similar to Journal view and users delete activities instead of journal entries || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1442 1442] || Reject activity bundles which require a newer version of Sugar || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1646 1646] || No way to force-close (kill) an activity || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3143 3143] || remove icon-slicer dependency || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4015 4015] || Touch: make take screenshot available || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4016 4016] || Touch: change brightness and mode || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4387 4387] || Style text handles context palette || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4581 4581] || Shift key on OSK looks the same in all modes || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4623 4623] || improve packaging of activities that rely on system level libraries|| enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4628 4628] || Sugar: need ui to connect to hidden networks || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4671 4671] || Add voice recognition || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4729 4729] || convert to new style gobject signal format || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4768 4768] || We should drop Palettes with Gtk.Menu implementation || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1843 1843] || Journal accesses USB devices on scrolling || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1471 1471] || Send a file to more than one person at a time || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2105 2105] || add a screensaver to Sugar || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2264 2264] || Network, forget, or remove as favourite || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2416 2416] || provide framework code for releasing resources while hidden || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2433 2433] || class Activity should setlocale || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2473 2473] || transfer entire data store entry, including arbitrary metadata || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2480 2480] || Journal file actions need progress/busy indication || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2869 2869] || Radio/wireless control should interact with rfkill || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3026 3026] || Time filter only cuts off the end of the list instead of offering disjunct time spans || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3028 3028] || Add modifier to take screenshot only with the canvas || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3209 3209] || Journal should support display of activity-specific badges || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3412 3412] || Use gtk_accelerator_parse() instead of egg for key handling || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3627 3627] || Installing an activity should show progress information || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3672 3672] || duplicate function in view source needs progress bar || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3826 3826] || Get supported audio and video mime types from gstreamer || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3829 3829] || Allow Sugar users to adjust clock time and date || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3856 3856] || Add other folders to Journal || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3876 3876] || Sugar needs method to force wifi network rescan || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3877 3877] || Sugar needs method to force Buddy/Shared Activities Network view update || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4257 4257] || Toolbar overflow button: add a better looking arrow || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4273 4273] || View Source: provide feedback for non text files || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4327 4327] || Language CP module displays combo text in 2nd preferred language|| enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4398 4398] || Toolkit: add MessageBox || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4614 4614] || sugar: implement preview on clipboard button for images || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4660 4660] || Keyboard shortcuts missing || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4675 4675] || Allow the user to select custom image for background with a button || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4681 4681] || Show icon indicating volume and brightness levels when corresponding button is pressed || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4702 4702] || File transfer does not show progress or completion || enhancement || Sugar<br />
|}<br />
<br />
=== Sugar bugs from bugs.sugarlabs.org ===<br />
Each of these open tickets is potential task-worthy.<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Ticket !! Description !! Type !! Component<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4307 4307] || clipboard.set_with_data/set_with_owner is not introspectable || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1549 1549] || Collaboration faults when resuming and then stopping a shared activity before connections are sucessfull || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2195 2195] || Control panel, timezone incorrectly calculated|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3326 3326] || Telepathy signals connected twice when connecting to jabber || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3833 3833] || Palettes on the bottom of screen don't appear after rotation to portrait mode || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3921 3921] || Journal palette is not updated when I stay in the same column || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4166 4166] || Long press timeout 'feels' longer than 0.5 seconds || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4330 4330] || Journal: start editing unwanted entry || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4343 4343] || Journal:Timeout to get the palette 'feels' really long || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4461 4461] || "Volume busy" dialog appear in Sugar || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4613 4613] || Neighborhood view should respect max_participants limit || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4709 4709] || MenuItem at times do not trigger activate signal || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4743 4743] || missing AU translations || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/305 305] || Checkbox/Radio button outline on black panel disappears in mouseover selection highlight || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/933 933] || Neighbourhood shared Activity title re-named by someone else re-joining || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1051 1051] || loads of get_file() invocations and short-lived file paths during activity installation || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1181 1181] || Registration should be async || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1429 1429] || Home view object's long titles aren't formated like everywhere else || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1490 1490] || home screen: "start new" behaviour not reset if non-<alt> modifier active while releasing <alt> || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1561 1561] || Most activities and Sugar itself chokes if the type of metadata returned is different from the expected one || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1936 1936] || sugar.datastore.datastore.find() breaks for large data stores || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2355 2355] || Neighborhood shows Jabber account id (hex_number@server.domain) instead of nick name|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2478 2478] || Buttons unresponsive when launching Sugar until Journal appears on Home View || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2503 2503] || View-source does not close when activity closes || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2525 2525] || Wrong query specification for datastore.find() || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2570 2570] || gdk window obscured events don't always happen || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2702 2702] || "Invite to <activity>" shown even for activities that don't support sharing || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2818 2818] || New/upgraded activities are added to Favourites View || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2822 2822] || Software Update selects new activities by default|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2957 2957] || handle lack of ALIASING and SIMPLE_PRESENCE || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2962 2962] || Rerigister on jabber server || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2963 2963] || Sugar telepathy code does not take into account presence status of buddies || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2967 2967] || Disable telepathy plugins on sugar shell level || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2978 2978] || Remove hierachy-changed signal handlers when not needed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2982 2982] || Reconnect to jabber server in CP even if it was not changed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2992 2992] || GSM palette 1 hour off || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3006 3006] || Ad-hoc network icon mixup || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3118 3118] || presence: shell is not notified when we quit Sugar || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3119 3119] || traceback after Sugar startup || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3146 3146] || Dragging a Journal entry drags the whole white entry bar, not just the icon || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3147 3147] || Hovering Home list view un-favorited star provides confusing feedback || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3172 3172] || traceback when associating to a new schoolserver || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3432 3432] || Your Journal is full screen displayed badly || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3433 3433] || Can't launch activities when disk is full || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3450 3450] || Activity.__init__(..., create_jobject=False) broken || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3601 3601] || Reword "Create a connection in the control panel.", to use My Settings || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3646 3646] || Palette dissapears after some clicks || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3708 3708] || Sugar doesn't DHCP connecting to ad-hoc wifi point || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3748 3748] || Presence not updated, when client disconencts from telepathy-salut || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3796 3796] || sugar-toolkit-gtk3: Drag and drop in color button || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3831 3831] || Frame: animation has regressed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3930 3930] || Sidebar clipboard content tooltip should render Unicode/HTML escapes safely (with no active links, etc.) || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3953 3953] || Sugar hover menus take a long time to appear on XO-1 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3974 3974] || Buttons: theme 'active' state correctly || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3996 3996] || Show frame or OSK, never both || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4000 4000] || Views: when Palette is up you can not switch views || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4023 4023] || Touch: Copy/paste palette for touch text selection || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4027 4027] || Sugar does not autoconfigure USB Ethernet network adapter || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4047 4047] || Journal should display specific icons for .xo and .xol bundles || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4058 4058] || GtkPaned can't be adjusted in touchscreen || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4060 4060] || Bad behaviour of gestures inside a ScrolledWindow || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4069 4069] || Browse: OSK not displayed in password entries || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4090 4090] || Style arrows || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4133 4133] || Gtk: some widgets do receive a GDK_CROSSING_UNGRAB leave event when tapped || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4134 4134] || Canvas auto panning based on input focus || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4150 4150] || Applications need to detect/adapt to OSK height when OSK height can vary || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4181 4181] || Research how should we use get_preferred_size || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4227 4227] || Touch long-press on a menu entry in a palette dismisses the palette with no action || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4238 4238] || Sliders hard to handle with touch || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4247 4247] || OSK over 'clear search' button || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4301 4301] || Frame: revisit buttons || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4310 4310] || Sometimes the frame gesture stops working || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4314 4314] || Frame Transfer tool button does not respond to touch || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4318 4318] || Frame clippings palette needs GTK3 theme updates || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4322 4322] || Modem palette data counters stuck at 0 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4329 4329] || Language CP module 2nd choice language can trigger right to left Sugar layout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4339 4339] || Journal model: traceback || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4358 4358] || Inactive next button on naming screen has no arrow || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4397 4397] || Fix ViewSource layout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4449 4449] || "Spanish" and other language names are not translated in My Settings language section || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4452 4452] || Partner icon does not appear in the frame || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4454 4454] || Error at exit activity after participate in collaboration || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4456 4456] || Bad activity name escaping in Network view || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4458 4458] || Can't reconnect to a shared activity || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4463 4463] || Collaboration palette can't be opened after press F1 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4467 4467] || GTK3: Sharing Palette does not highlight the current selected option || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4497 4497] || Html activity segfault on exit || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4547 4547] || OSK doesn't appeares when switched to tablet mode from laptop mode || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4646 4646] || Browse sometimes does not display text if scrolled by touchscreen || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4690 4690] || Journal: Palettes at the bottom of the list should reveal upwards || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4692 4692] || Journal: Alt+1 doesn't take screenshot if objects palette is opened || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4693 4693] || Send to friend not working || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4717 4717] || Error trying to open object palette in the journal|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4723 4723] || Activity launches even when pointer click is released outside of icon region || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4736 4736] || Can't find volume when external device remove || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4739 4739] || Errors when _Account._connection is lost || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4742 4742] || Use localed to set language in control panel || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4744 4744] || Sugar displays all languages including ones with no such translations. || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4756 4756] || Maximum Activities notification doesn't display || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4761 4761] || Tamtam activities fail to start in sugar0.100 running from sugar on a stick 10 installed on hard disk. || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4793 4793] || journal entry palette is hidden on release of long press || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/618 618] || jabber server name activated without user confirmation || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/634 634] || Dropdown panel highlight confusing on 'Encryption Type:' of 'Wireless Key Required' dialog || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1022 1022] || neighborhood view: new, matching AP not highlighted when view is filtered || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1151 1151] || connect to gabble immediately after registration || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1305 1305] || gtk.Image().set_from_icon_name() provides incorrectly scaled icon image || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1393 1393] || journal entry without a file is offered for transfer || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1624 1624] || gsm-client goes to infinite loop || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1674 1674] || change of encryption requirement on an access point prevents network connection || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1677 1677] || Speaker device not updated on external state changes|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1743 1743] || group view showing same activity multiple times || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1833 1833] || Journal: Preserve object title while copying ds object to clipboard || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1882 1882] || cannot connect to wireless network after restarting NetworkManager || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1976 1976] || School server registration works differently on XO|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2016 2016] || My Settings on top lost focus with popup || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2116 2116] || Keeping a text clipping, the copying to USB, ends up with a .doc extension || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2169 2169] || creating a DS entry is being done synchronously || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2267 2267] || Do we get the right file extension with mime.get_primary_extension(mime_type) ? || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2306 2306] || should not try to connect to a jabber server if no server is set in the control panel || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2308 2308] || shell listens unnecessarily for NameOwnerChanged signals || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2319 2319] || Resuming large file from external media doesn't work because of dbus timeout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2360 2360] || ActivityButton doesn't get garbage collected || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2958 2958] || Journal refresh with large number of entries may steal focus || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2964 2964] || Race condition while buddy initiation || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2974 2974] || Resuming journal entries may cause Sugar to falsely report failed activity launch || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3043 3043] || The first time, the network device icon in the frame is a gray circle || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3093 3093] || Time Zone reboot warning can be bypassed with a "cancelled" yet accepted change || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3138 3138] || Regression in startup animation when you resume from Journal || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3169 3169] || traces about not eing able to update a buddy || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3170 3170] || Sometimes the device icon in the frame and the icon in the neighborhood view are out of sync || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3204 3204] || Set the Sugar cursor in a non racy way || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3309 3309] || Journal: .doc file (type:application/msword) uses a data icon instead of a text icon || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3316 3316] || Wireless Modem error refers to Control Panel (not My Settings) || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3345 3345] || Detect speech libraries || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3378 3378] || When opening downloaded pdf in Read activity pulser not displayed correctly || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3544 3544] || Home random view: It shouldn't be possible to drag & drop icons over the XO character || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3600 3600] || cat process created by sugar-datastore not reaped if it is killed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3635 3635] || Activity icon in menu bar may jump in position when exiting activity || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3812 3812] || Journal detail view, text below the preview image can enlarge left column || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4098 4098] || FavoritesView: icon offset || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4140 4140] || It is possible to start Activities before the Journal is loaded || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4204 4204] || Journal detail view: Text selection handlers are shown while the Activity is loading || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4205 4205] || Icon below buddy on Home View shows a closed activity || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4229 4229] || Gamepad down arrow show and hide the OSK || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4261 4261] || No OSK in first boot, ebook mode || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4286 4286] || Traceback when drag and drop icons on random layout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4287 4287] || Bad volume saving behaviour when no sound device is found || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4393 4393] || WEP connections created in Sugar always use open authentication || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4412 4412] || Black drags in Browse/Wikipedia || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4437 4437] || Transfer palette not updating progress bar || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4575 4575] || OSK doesn't work in Date & Time CP applet search field || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4683 4683] || Active activity should move to first place in the list in the frame || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4722 4722] || sugar-install-bundle: fails to update activity list view after activity upgrade || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3962 3962] || GTK3 treeview root item styled with rounded corners|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4483 4483] || Clipboard regression in 13.2.0 images: set_with_data|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4780 4780] || CPU usage goes up significantly after The Frame UI is accessed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4781 4781] || please support upower >= 0.99 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4783 4783] || Sugar fails to install on Raspberry Pi (ARM6 - PiDora)|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4784 4784] || missing countries and providers data on 3G configuration || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4785 4785] || Browse-156 segfault on Fedora 18 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4787 4787] || Screen does not redraw till the mouse is moved || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4789 4789] || Collaboration does not work in SoaS f21-Alpha-RC1 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4791 4791] || Journal:wrong icon on external device || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4792 4792] || Journal: device palette position is wrong || defect || Sugar<br />
|}<br />
<br />
=== Enhancements from bugs.sugarlabs.org ===<br />
Each of these open tickets is potential task-worthy.<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Ticket !! Description !! Component<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/758 758] || Port to new tube API || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1124 1124] || Allow SoaS backup and restore from an XS server || Sugar on a Stick (SoaS)<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/971 971] || Global bookmarks in Browse || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1796 1796] || Proposed activity for best English-language learn-to-read website || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2373 2373] || add support for Object Chooser || Restore<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3132 3132] || Memorize should have latest speak update || Memorize<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3596 3596] || Browse: can not copy from inline pdf view or url entry || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4373 4373] || Memorize: save game state || Memorize<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4392 4392] || Chart should let the user to modify the chart font. || Chart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4472 4472] || 'Reject Suggestion' button is not working || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4708 4708] || portfolio should export ODP || Portfolio<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/946 946] || Can not download image when opened in a popup || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1554 1554] || support for resuming downloads || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1970 1970] || crossword-maker sugarization || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2361 2361] || Pippy fails to start if journal entry is corrupt || Pippy<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2740 2740] || Update list of people in Pippy Thanks example || Pippy<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2838 2838] || Paint: The kids want the magic tools from TuxPaint || Paint<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3494 3494] || Show points in Maze collaboration || Maze<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3495 3495] || Generate levels with holes || Maze<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4241 4241] || Read: support cbz and cbr files || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4291 4291] || Add Theorie to Pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4359 4359] || Add Level Tool to pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4484 4484] || Jukebox: add reorder c apability to playlist || Jukebox<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4584 4584] || Slider_puzzle activity to GTK+3 || SliderPuzzle<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4588 4588] || Chart activity: filter input to only accept valid values || Chart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4698 4698] || Enhancement: Pippy should have a dark grey background || Pippy<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/542 542] || UI improvements and channel tab issues || Irc<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/587 587] || XOIRC support for multiple servers || Irc<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/652 652] || Potential Journal Detail View improvements (Mock-up) || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/661 661] || need progress indication for jigsaw puzzle sharing || JigsawPuzzle<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/662 662] || Could reduce tubes code || JokeMachine<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/722 722] || Better notification for in activity events || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/773 773] || Add redirect from /wiki/ to /go/ || wiki.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/966 966] || Add SL navigation bar to ASLO main page || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1165 1165] || Tower of babble problem with IRC activity || Irc<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1289 1289] || lenguages available of activities on aslo || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1343 1343] || Labyrinth should have an 'export to text for outlining' feature || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1366 1366] || easier bug reporting || Log<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1459 1459] || Cartoon Characters should not scale image to fill the screen || CartoonBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1538 1538] || Socialcalc.po is not available in Pootle || SEETA<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1559 1559] || ASLO spanish redirection || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1649 1649] || calculate support for arabic numbers || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1705 1705] || All activity pages on ASLO should provide links to trac and git || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1756 1756] || Fetch activity title transaltion from submited bundle || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1780 1780] || TimeLapse-2 gives no progress output during Time Lapse Collection || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1829 1829] || [Labyrinth] Added New Label Support || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1847 1847] || Switch Record to gst camerabin plugin || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1973 1973] || Ticket to track Arabic bugs || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2047 2047] || SoaS has no "view source" keyboard shortcut || Sugar on a Stick (SoaS)<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2084 2084] || Pre-existing photos/videos not shared when making Record activity shared || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2110 2110] || Create Library Activity || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2118 2118] || DnD a link from Browse to the clipboard area of the Frame, should copy it || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2122 2122] || Measure sensor schematics || Measure<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2211 2211] || Words can only translate from english || Words<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2282 2282] || Don't require the user to experiment to find out what the color-selector icons are for || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2386 2386] || Calculate error point reporting || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2392 2392] || Allow more node and relationship attributes || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2438 2438] || For speed, Physics redraw should be based on dirty rects, not full screen updating || Physics<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2445 2445] || revise Soas boot menu; add entrys:"try soas without installing" "install to hard disk" with dfferent behaviors || Sugar on a Stick (SoaS)<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2530 2530] || Custom titles for audio recordings || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2557 2557] || Record UI Improvement || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2572 2572] || sharing logic is broken || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2594 2594] || Start a translation team for the Amazighe Language || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2634 2634] || Tux Paint cursor is not sugarized || TuxPaint<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2637 2637] || browse to save .ta files to Journal || wiki.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2679 2679] || Paste blocks fail gracefully on error || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2697 2697] || Calculate should use an appropriate number of significant figures for trigonometric functions || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2698 2698] || Calculate allows default variables to be redefined || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2701 2701] || Calculate should let you export plotted graphs to the clipboard || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2705 2705] || Chat should note when a continuous string of characters extends beyond the end of the screen || Chat<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2750 2750] || Ability to move pins/motors once placed || Physics<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2761 2761] || parallelize the execution of turtles || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2787 2787] || Port Chat to new PS API || Chat<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2831 2831] || unintuitive switch back to capture mode || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2902 2902] || Allow Distance UI to layout on a 800x480 display || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2908 2908] || Add a lunar phase calendar view || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2909 2909] || Add an overhead Earth, Moon, Sun view || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2910 2910] || Add option to export the moon phase as an image to the Journal || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2911 2911] || Add eclipse glyph to indicate the type of eclipse || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2912 2912] || Allow Poll Builder UI to layout on a 800x480 display || Poll<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2922 2922] || Share improvement on calendar || Calendario<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2923 2923] || Journal integration for Calendar || Calendario<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2939 2939] || Drumbeats / TamTam || TamTam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2988 2988] || When closing an unnammed activity, have option to erase it || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3110 3110] || Removable storage devices and in general entities with their own identities should have unique colors || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3111 3111] || Browse should have the option of allowing the user to only load text. || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3151 3151] || Add green line in Grid mode for terminator line || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3154 3154] || Discard does not discard game || Memorize<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3185 3185] || Hot key for journal not present in frame tool tip. || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3249 3249] || Should Sweets be mentioned as an option for non-tech users as well || wiki.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3287 3287] || Journal: Found way to have mini-icons in "Anything" combobox and "Resume with" palette show as a white stroke || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3289 3289] || Globally changing "Works with" entries || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3308 3308] || Could you release new version with pt translation? || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3393 3393] || Odd eToys L10n issue || Etoys<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3417 3417] || Spirolaterals should ask OLPC builds not to suspend while drawing || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3506 3506] || Chat should provide notification of new activity if scrollbar is not in the bottom position || Chat<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3523 3523] || Read use a prettier font for Epub || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3615 3615] || Add record or export to ogg buton to TamTamMini and TamTamJam || TamTam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3624 3624] || Calculate should save equations in history along with the generated plots || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3647 3647] || Hook up language control for l10n - migrated ticket || StoryBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3650 3650] || Add My Character and Add My Background || StoryBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3651 3651] || Collaboration functionality || StoryBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3693 3693] || Indiciate what architecture activities are for || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3735 3735] || Māori traditional instruments for TamTam || TamTam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3778 3778] || Load images when they are needed || TypingTurtle<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3881 3881] || Clock activity does not save state || Clock<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3882 3882] || Help activity does not save state || Help<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3897 3897] || Infoslicer needs to be able to help users go through Wiki disambiguation pages || InfoSlicer<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3966 3966] || Submit birthday on registration on SN server || sugar-client<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3978 3978] || FotoToon should have nice friendly help hint for new activity instances || FotoToon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3979 3979] || Meta ticket of Activities that overflow in portrait orientation (mainly toolbars) || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4043 4043] || Add convert to pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4086 4086] || fototune enhancement: export as video || FotoToon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4117 4117] || Touchscreen on screen keyboard || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4138 4138] || Write: enable spellchecking || Write<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4292 4292] || Add Conozco Elementos Químicos to Pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4349 4349] || Improve Turtleart discoverability in Gnome || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4362 4362] || Waterfall view in Measure.. || Measure<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4649 4649] || Turtleblocks sensor calibrations for V193 || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4677 4677] || Provide an option to specify number of frames || Flipsticks<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4697 4697] || Enhancement: Terminal should have a dark grey background and colored text || Terminal<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4699 4699] || when your name is typed, irc activity icon could have the badge emblem-notification.svg || IRC<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4724 4724] || GetBooks: keep the information of the downloaded books || GetBooks<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4738 4738] || Copy paste dosen't work in calculate, also Ctrl+a(for entire selection) dosen't work. || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4748 4748] || Develop should make bundle with Activity icon || Develop<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4774 4774] || Feature Request: Jump to action definition || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4786 4786] || Proposal for a Sugar installer app for GNOME default installer software || packages.sugarlabs.org<br />
|}<br />
<br />
== Mentors ==<br />
;NOTES TO MENTORS:<br />
:Please refer to [[Google Code In 2014/Participate#Mentors]] for details regarding enrolling as a mentor.<br />
:Please add yourself to the list below.<br />
:Feel free to add new tasks to the table above.<br />
<br />
Depending on the project, we will assign multiple mentors from our various development and support teams.<br />
<br />
* Walter Bender - also org admin for GCI</div>Ignacio Rodríguezhttps://wiki.sugarlabs.org/index.php?title=Google_Code_In_2014&diff=93509Google Code In 20142014-10-11T13:50:59Z<p>Ignacio Rodríguez: /* Enhancements from bugs.sugarlabs.org */</p>
<hr />
<div><noinclude>[[Category:Trac Reference]][[Category:Idea]]<br />
[[Category: GCI2014]]</noinclude><br />
This is the project page for the Sugar Labs application to [http://www.google-melange.com/gci/homepage/google/gci2014 Google Code In 2014]. Sugar Labs community members: please feel free to add tasks below. We'll do an edit before final applications are due in late Oct 2014.<br />
<br />
== Message to potential participants ==<br />
<br />
It is important that you obtain permission of your parents.<br />
<br />
Es importante que obtengas el permiso de tus padres para participar.<br />
<br />
http://www.google-melange.com/gci/document/show/gci_program/google/gci2014/help_page#eligible<br />
<br />
Please see the Contest Rules for Eligibility and Registration process.<br />
<br />
http://www.google-melange.com/gci/document/show/gci_program/google/gci2014/terms_and_conditions<br />
<br />
'''Details regarding the required forms and paperwork are here: [[Google Code In 2014/Participate#Students]].'''<br />
<br />
Also, you will likely need to set up the Sugar development environment. See http://developer.sugarlabs.org/dev-environment.md.html for details. Further information about contributing to the project can be found here: http://developer.sugarlabs.org/<br />
<br />
Please don't hesitate to ask questions on our irc channel (#sugar on irc.freenode.net) or on the sugar-devel list: sugar-devel AT lists.sugarlabs DOT org<br />
<br />
== Why we are participating ==<br />
<br />
Sugar is written and maintained by volunteers, who range from seasoned professionals to children as young as 12-years of age. Children who have grown up with Sugar have transitioned from Sugar users to Sugar App developers to Sugar maintainers. They hang out on IRC with the global Sugar developer community and are full-fledged members of the Sugar development team. It is this latter group of children we hope will participate in and benefit from Google Code-in. Specifically we want to re-enforce the message that Sugar belongs to its users and that they have both ownership and the responsibility that ownership implies. Just as learning is not something done to you, but something you do, learning with Sugar ultimately means participating in the Sugar development process. At Sugar Labs, we are trying to bring the culture of Free Software into the culture of school. So the Code-in is not just an opportunity for us to get some tasks accomplished, it is quintessential to our overall mission.<br />
<br />
== Tasks ==<br />
'''Note:''' This is our preliminary list of tasks. We can add more as the contest progresses.<br />
<br />
Mentors: please feel free to add more tasks and/or add yourself as a potential mentor to an existing task.<br />
<br />
Tasks must fall within one of these five categories: [[#Documentation/Training]]; [[#Outreach/Research]]; [[#User Interface]]; [[#Quality Assurance]]; and [[#Code]].<br />
<br />
===Documentation/Training===<br />
Tasks related to creating/editing documents and helping others learn more<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===Outreach/Research===<br />
Tasks related to community management, outreach/marketing, or studying problems and recommending solutions<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===User Interface===<br />
Tasks related to user experience research or user interface design and interaction<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===Quality Assurance===<br />
Tasks related to testing and ensuring code is of high quality.<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|}<br />
<br />
===Code===<br />
Tasks related to writing or refactoring code<br />
<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Title !! Description !! Hours !! Mentor !! Tag<br />
|-<br />
| Sharing Palette Highlight Bug || GTK3 Sharing Palette does not highlight the current selected option. The palette should highlight the icon of the selected option. This worked fine in GTK2. You can test with Chat (gtk2) and Browse (gtk3). Ticket: http://bugs.sugarlabs.org/ticket/4467 Relevant code: gtk3 themes at github.com/sugarlabs/sugar-artwork || 48 || Bug, Sugar, GTK, Theme || UI, Code<br />
|-<br />
| Magic Tool For Paint || The kids want the magic tools from TuxPaint in the sugar Paint activity. The teachers in Uruguay say the kids like the magic tools from TuxPaint. Ticket: http://bugs.sugarlabs.org/ticket/2838 Relevant code: https://github.com/godiard/paint-activity || 72 || Feature, Magic, Paint, Activity || Code<br />
|-<br />
|| Clear Browse Cache on Crash || Browse cache can bloat up with time consuming valuable space on the laptop. On one laptop me and tch checked, there were 400MB of unaccessible files (mostly multimedia) in the Browse instance folder. We need a procedure to clean instance/ when starting browse (needs to check it is the only instance to avoid corner case of more than one browse instance). Another option is to check the date of partial files... Ticket: http://bugs.sugarlabs.org/ticket/2659#comment:6 Relevant code: https://github.com/sugarlabs/browse-activity || 48 || Browse, Activity, Bug, Cache || Code<br />
|-<br />
|| On Screen keyboard Covers Terminal || On terminal activity, the OSK is covering the text entry area. This means that they cannot be used in tablet (full-touch) mode, meaning that they cannot meet Objective #2487. Ticket: http://bugs.sugarlabs.org/ticket/4542 Relevant code: https://github.com/godiard/terminal-activity || 48 || Terminal, Bug, OSK, Touch, XO-Required, Activity || Code, UI<br />
|-<br />
|| Pippy does not load example if no tabs present || Steps: open pippy, close all tabs, open an example (any), nothing will happen and is confusing, the log shows an ugly error. Ticket: http://bugs.sugarlabs.org/ticket/4782 Relevant code: https://github.com/walterbender/Pippy || 48 || Pippy, Bug, Activity || Code<br />
|}<br />
<br />
== Unsorted tasks ==<br />
=== Sugar enhancements from bugs.sugarlabs.org ===<br />
Each of these open tickets is potential task-worthy.<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Ticket !! Description !! Type !! Component<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/362 362] || can't register with multiple school servers || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/381 381] || Neighbourhood view icons should be placed in a spatially repeatable way || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/806 806] || Activities list view is very similar to Journal view and users delete activities instead of journal entries || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1442 1442] || Reject activity bundles which require a newer version of Sugar || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1646 1646] || No way to force-close (kill) an activity || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3143 3143] || remove icon-slicer dependency || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4015 4015] || Touch: make take screenshot available || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4016 4016] || Touch: change brightness and mode || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4387 4387] || Style text handles context palette || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4581 4581] || Shift key on OSK looks the same in all modes || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4623 4623] || improve packaging of activities that rely on system level libraries|| enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4628 4628] || Sugar: need ui to connect to hidden networks || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4671 4671] || Add voice recognition || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4729 4729] || convert to new style gobject signal format || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4768 4768] || We should drop Palettes with Gtk.Menu implementation || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1843 1843] || Journal accesses USB devices on scrolling || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1471 1471] || Send a file to more than one person at a time || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2105 2105] || add a screensaver to Sugar || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2264 2264] || Network, forget, or remove as favourite || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2416 2416] || provide framework code for releasing resources while hidden || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2433 2433] || class Activity should setlocale || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2473 2473] || transfer entire data store entry, including arbitrary metadata || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2480 2480] || Journal file actions need progress/busy indication || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2869 2869] || Radio/wireless control should interact with rfkill || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3026 3026] || Time filter only cuts off the end of the list instead of offering disjunct time spans || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3028 3028] || Add modifier to take screenshot only with the canvas || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3209 3209] || Journal should support display of activity-specific badges || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3412 3412] || Use gtk_accelerator_parse() instead of egg for key handling || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3627 3627] || Installing an activity should show progress information || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3672 3672] || duplicate function in view source needs progress bar || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3826 3826] || Get supported audio and video mime types from gstreamer || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3829 3829] || Allow Sugar users to adjust clock time and date || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3856 3856] || Add other folders to Journal || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3876 3876] || Sugar needs method to force wifi network rescan || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3877 3877] || Sugar needs method to force Buddy/Shared Activities Network view update || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4257 4257] || Toolbar overflow button: add a better looking arrow || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4273 4273] || View Source: provide feedback for non text files || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4327 4327] || Language CP module displays combo text in 2nd preferred language|| enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4398 4398] || Toolkit: add MessageBox || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4614 4614] || sugar: implement preview on clipboard button for images || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4660 4660] || Keyboard shortcuts missing || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4675 4675] || Allow the user to select custom image for background with a button || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4681 4681] || Show icon indicating volume and brightness levels when corresponding button is pressed || enhancement || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4702 4702] || File transfer does not show progress or completion || enhancement || Sugar<br />
|}<br />
<br />
=== Sugar bugs from bugs.sugarlabs.org ===<br />
Each of these open tickets is potential task-worthy.<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Ticket !! Description !! Type !! Component<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4307 4307] || clipboard.set_with_data/set_with_owner is not introspectable || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1549 1549] || Collaboration faults when resuming and then stopping a shared activity before connections are sucessfull || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2195 2195] || Control panel, timezone incorrectly calculated|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3326 3326] || Telepathy signals connected twice when connecting to jabber || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3833 3833] || Palettes on the bottom of screen don't appear after rotation to portrait mode || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3921 3921] || Journal palette is not updated when I stay in the same column || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4166 4166] || Long press timeout 'feels' longer than 0.5 seconds || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4330 4330] || Journal: start editing unwanted entry || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4343 4343] || Journal:Timeout to get the palette 'feels' really long || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4461 4461] || "Volume busy" dialog appear in Sugar || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4613 4613] || Neighborhood view should respect max_participants limit || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4709 4709] || MenuItem at times do not trigger activate signal || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4743 4743] || missing AU translations || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/305 305] || Checkbox/Radio button outline on black panel disappears in mouseover selection highlight || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/933 933] || Neighbourhood shared Activity title re-named by someone else re-joining || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1051 1051] || loads of get_file() invocations and short-lived file paths during activity installation || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1181 1181] || Registration should be async || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1429 1429] || Home view object's long titles aren't formated like everywhere else || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1490 1490] || home screen: "start new" behaviour not reset if non-<alt> modifier active while releasing <alt> || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1561 1561] || Most activities and Sugar itself chokes if the type of metadata returned is different from the expected one || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1936 1936] || sugar.datastore.datastore.find() breaks for large data stores || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2355 2355] || Neighborhood shows Jabber account id (hex_number@server.domain) instead of nick name|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2478 2478] || Buttons unresponsive when launching Sugar until Journal appears on Home View || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2503 2503] || View-source does not close when activity closes || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2525 2525] || Wrong query specification for datastore.find() || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2570 2570] || gdk window obscured events don't always happen || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2702 2702] || "Invite to <activity>" shown even for activities that don't support sharing || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2818 2818] || New/upgraded activities are added to Favourites View || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2822 2822] || Software Update selects new activities by default|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2957 2957] || handle lack of ALIASING and SIMPLE_PRESENCE || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2962 2962] || Rerigister on jabber server || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2963 2963] || Sugar telepathy code does not take into account presence status of buddies || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2967 2967] || Disable telepathy plugins on sugar shell level || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2978 2978] || Remove hierachy-changed signal handlers when not needed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2982 2982] || Reconnect to jabber server in CP even if it was not changed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2992 2992] || GSM palette 1 hour off || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3006 3006] || Ad-hoc network icon mixup || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3118 3118] || presence: shell is not notified when we quit Sugar || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3119 3119] || traceback after Sugar startup || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3146 3146] || Dragging a Journal entry drags the whole white entry bar, not just the icon || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3147 3147] || Hovering Home list view un-favorited star provides confusing feedback || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3172 3172] || traceback when associating to a new schoolserver || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3432 3432] || Your Journal is full screen displayed badly || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3433 3433] || Can't launch activities when disk is full || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3450 3450] || Activity.__init__(..., create_jobject=False) broken || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3601 3601] || Reword "Create a connection in the control panel.", to use My Settings || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3646 3646] || Palette dissapears after some clicks || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3708 3708] || Sugar doesn't DHCP connecting to ad-hoc wifi point || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3748 3748] || Presence not updated, when client disconencts from telepathy-salut || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3796 3796] || sugar-toolkit-gtk3: Drag and drop in color button || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3831 3831] || Frame: animation has regressed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3930 3930] || Sidebar clipboard content tooltip should render Unicode/HTML escapes safely (with no active links, etc.) || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3953 3953] || Sugar hover menus take a long time to appear on XO-1 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3974 3974] || Buttons: theme 'active' state correctly || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3996 3996] || Show frame or OSK, never both || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4000 4000] || Views: when Palette is up you can not switch views || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4023 4023] || Touch: Copy/paste palette for touch text selection || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4027 4027] || Sugar does not autoconfigure USB Ethernet network adapter || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4047 4047] || Journal should display specific icons for .xo and .xol bundles || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4058 4058] || GtkPaned can't be adjusted in touchscreen || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4060 4060] || Bad behaviour of gestures inside a ScrolledWindow || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4069 4069] || Browse: OSK not displayed in password entries || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4090 4090] || Style arrows || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4133 4133] || Gtk: some widgets do receive a GDK_CROSSING_UNGRAB leave event when tapped || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4134 4134] || Canvas auto panning based on input focus || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4150 4150] || Applications need to detect/adapt to OSK height when OSK height can vary || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4181 4181] || Research how should we use get_preferred_size || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4227 4227] || Touch long-press on a menu entry in a palette dismisses the palette with no action || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4238 4238] || Sliders hard to handle with touch || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4247 4247] || OSK over 'clear search' button || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4301 4301] || Frame: revisit buttons || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4310 4310] || Sometimes the frame gesture stops working || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4314 4314] || Frame Transfer tool button does not respond to touch || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4318 4318] || Frame clippings palette needs GTK3 theme updates || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4322 4322] || Modem palette data counters stuck at 0 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4329 4329] || Language CP module 2nd choice language can trigger right to left Sugar layout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4339 4339] || Journal model: traceback || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4358 4358] || Inactive next button on naming screen has no arrow || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4397 4397] || Fix ViewSource layout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4449 4449] || "Spanish" and other language names are not translated in My Settings language section || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4452 4452] || Partner icon does not appear in the frame || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4454 4454] || Error at exit activity after participate in collaboration || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4456 4456] || Bad activity name escaping in Network view || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4458 4458] || Can't reconnect to a shared activity || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4463 4463] || Collaboration palette can't be opened after press F1 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4467 4467] || GTK3: Sharing Palette does not highlight the current selected option || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4497 4497] || Html activity segfault on exit || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4547 4547] || OSK doesn't appeares when switched to tablet mode from laptop mode || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4646 4646] || Browse sometimes does not display text if scrolled by touchscreen || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4690 4690] || Journal: Palettes at the bottom of the list should reveal upwards || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4692 4692] || Journal: Alt+1 doesn't take screenshot if objects palette is opened || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4693 4693] || Send to friend not working || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4717 4717] || Error trying to open object palette in the journal|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4723 4723] || Activity launches even when pointer click is released outside of icon region || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4736 4736] || Can't find volume when external device remove || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4739 4739] || Errors when _Account._connection is lost || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4742 4742] || Use localed to set language in control panel || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4744 4744] || Sugar displays all languages including ones with no such translations. || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4756 4756] || Maximum Activities notification doesn't display || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4761 4761] || Tamtam activities fail to start in sugar0.100 running from sugar on a stick 10 installed on hard disk. || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4793 4793] || journal entry palette is hidden on release of long press || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/618 618] || jabber server name activated without user confirmation || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/634 634] || Dropdown panel highlight confusing on 'Encryption Type:' of 'Wireless Key Required' dialog || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1022 1022] || neighborhood view: new, matching AP not highlighted when view is filtered || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1151 1151] || connect to gabble immediately after registration || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1305 1305] || gtk.Image().set_from_icon_name() provides incorrectly scaled icon image || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1393 1393] || journal entry without a file is offered for transfer || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1624 1624] || gsm-client goes to infinite loop || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1674 1674] || change of encryption requirement on an access point prevents network connection || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1677 1677] || Speaker device not updated on external state changes|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1743 1743] || group view showing same activity multiple times || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1833 1833] || Journal: Preserve object title while copying ds object to clipboard || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1882 1882] || cannot connect to wireless network after restarting NetworkManager || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1976 1976] || School server registration works differently on XO|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2016 2016] || My Settings on top lost focus with popup || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2116 2116] || Keeping a text clipping, the copying to USB, ends up with a .doc extension || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2169 2169] || creating a DS entry is being done synchronously || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2267 2267] || Do we get the right file extension with mime.get_primary_extension(mime_type) ? || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2306 2306] || should not try to connect to a jabber server if no server is set in the control panel || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2308 2308] || shell listens unnecessarily for NameOwnerChanged signals || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2319 2319] || Resuming large file from external media doesn't work because of dbus timeout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2360 2360] || ActivityButton doesn't get garbage collected || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2958 2958] || Journal refresh with large number of entries may steal focus || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2964 2964] || Race condition while buddy initiation || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2974 2974] || Resuming journal entries may cause Sugar to falsely report failed activity launch || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3043 3043] || The first time, the network device icon in the frame is a gray circle || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3093 3093] || Time Zone reboot warning can be bypassed with a "cancelled" yet accepted change || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3138 3138] || Regression in startup animation when you resume from Journal || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3169 3169] || traces about not eing able to update a buddy || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3170 3170] || Sometimes the device icon in the frame and the icon in the neighborhood view are out of sync || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3204 3204] || Set the Sugar cursor in a non racy way || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3309 3309] || Journal: .doc file (type:application/msword) uses a data icon instead of a text icon || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3316 3316] || Wireless Modem error refers to Control Panel (not My Settings) || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3345 3345] || Detect speech libraries || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3378 3378] || When opening downloaded pdf in Read activity pulser not displayed correctly || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3544 3544] || Home random view: It shouldn't be possible to drag & drop icons over the XO character || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3600 3600] || cat process created by sugar-datastore not reaped if it is killed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3635 3635] || Activity icon in menu bar may jump in position when exiting activity || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3812 3812] || Journal detail view, text below the preview image can enlarge left column || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4098 4098] || FavoritesView: icon offset || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4140 4140] || It is possible to start Activities before the Journal is loaded || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4204 4204] || Journal detail view: Text selection handlers are shown while the Activity is loading || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4205 4205] || Icon below buddy on Home View shows a closed activity || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4229 4229] || Gamepad down arrow show and hide the OSK || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4261 4261] || No OSK in first boot, ebook mode || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4286 4286] || Traceback when drag and drop icons on random layout || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4287 4287] || Bad volume saving behaviour when no sound device is found || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4393 4393] || WEP connections created in Sugar always use open authentication || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4412 4412] || Black drags in Browse/Wikipedia || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4437 4437] || Transfer palette not updating progress bar || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4575 4575] || OSK doesn't work in Date & Time CP applet search field || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4683 4683] || Active activity should move to first place in the list in the frame || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4722 4722] || sugar-install-bundle: fails to update activity list view after activity upgrade || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3962 3962] || GTK3 treeview root item styled with rounded corners|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4483 4483] || Clipboard regression in 13.2.0 images: set_with_data|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4780 4780] || CPU usage goes up significantly after The Frame UI is accessed || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4781 4781] || please support upower >= 0.99 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4783 4783] || Sugar fails to install on Raspberry Pi (ARM6 - PiDora)|| defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4784 4784] || missing countries and providers data on 3G configuration || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4785 4785] || Browse-156 segfault on Fedora 18 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4787 4787] || Screen does not redraw till the mouse is moved || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4789 4789] || Collaboration does not work in SoaS f21-Alpha-RC1 || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4791 4791] || Journal:wrong icon on external device || defect || Sugar<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4792 4792] || Journal: device palette position is wrong || defect || Sugar<br />
|}<br />
<br />
=== Enhancements from bugs.sugarlabs.org ===<br />
Each of these open tickets is potential task-worthy.<br />
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"<br />
|-style="background:#787878; color: white;"<br />
!Ticket !! Description !! Component<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/758 758] || Port to new tube API || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1124 1124] || Allow SoaS backup and restore from an XS server || Sugar on a Stick (SoaS)<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/971 971] || Global bookmarks in Browse || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1796 1796] || Proposed activity for best English-language learn-to-read website || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2373 2373] || add support for Object Chooser || Restore<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3132 3132] || Memorize should have latest speak update || Memorize<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3596 3596] || Browse: can not copy from inline pdf view or url entry || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4373 4373] || Memorize: save game state || Memorize<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4392 4392] || Chart should let the user to modify the chart font. || Chart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4472 4472] || 'Reject Suggestion' button is not working || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4708 4708] || portfolio should export ODP || Portfolio<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/946 946] || Can not download image when opened in a popup || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1554 1554] || support for resuming downloads || Browse<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1970 1970] || crossword-maker sugarization || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2361 2361] || Pippy fails to start if journal entry is corrupt || Pippy<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2740 2740] || Update list of people in Pippy Thanks example || Pippy<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2838 2838] || Paint: The kids want the magic tools from TuxPaint || Paint<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2917 2917] || Log: collector UI needs improvement || Log<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3494 3494] || Show points in Maze collaboration || Maze<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3495 3495] || Generate levels with holes || Maze<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4241 4241] || Read: support cbz and cbr files || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4291 4291] || Add Theorie to Pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4359 4359] || Add Level Tool to pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4484 4484] || Jukebox: add reorder c apability to playlist || Jukebox<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4584 4584] || Slider_puzzle activity to GTK+3 || SliderPuzzle<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4588 4588] || Chart activity: filter input to only accept valid values || Chart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4698 4698] || Enhancement: Pippy should have a dark grey background || Pippy<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/542 542] || UI improvements and channel tab issues || Irc<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/587 587] || XOIRC support for multiple servers || Irc<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/652 652] || Potential Journal Detail View improvements (Mock-up) || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/661 661] || need progress indication for jigsaw puzzle sharing || JigsawPuzzle<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/662 662] || Could reduce tubes code || JokeMachine<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/722 722] || Better notification for in activity events || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/773 773] || Add redirect from /wiki/ to /go/ || wiki.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/966 966] || Add SL navigation bar to ASLO main page || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1165 1165] || Tower of babble problem with IRC activity || Irc<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1289 1289] || lenguages available of activities on aslo || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1343 1343] || Labyrinth should have an 'export to text for outlining' feature || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1366 1366] || easier bug reporting || Log<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1459 1459] || Cartoon Characters should not scale image to fill the screen || CartoonBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1523 1523] || Record output direct to memory card - XO || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1538 1538] || Socialcalc.po is not available in Pootle || SEETA<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1559 1559] || ASLO spanish redirection || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1649 1649] || calculate support for arabic numbers || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1705 1705] || All activity pages on ASLO should provide links to trac and git || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1756 1756] || Fetch activity title transaltion from submited bundle || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1780 1780] || TimeLapse-2 gives no progress output during Time Lapse Collection || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1829 1829] || [Labyrinth] Added New Label Support || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1847 1847] || Switch Record to gst camerabin plugin || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/1973 1973] || Ticket to track Arabic bugs || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2047 2047] || SoaS has no "view source" keyboard shortcut || Sugar on a Stick (SoaS)<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2084 2084] || Pre-existing photos/videos not shared when making Record activity shared || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2110 2110] || Create Library Activity || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2118 2118] || DnD a link from Browse to the clipboard area of the Frame, should copy it || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2122 2122] || Measure sensor schematics || Measure<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2211 2211] || Words can only translate from english || Words<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2282 2282] || Don't require the user to experiment to find out what the color-selector icons are for || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2386 2386] || Calculate error point reporting || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2392 2392] || Allow more node and relationship attributes || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2438 2438] || For speed, Physics redraw should be based on dirty rects, not full screen updating || Physics<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2445 2445] || revise Soas boot menu; add entrys:"try soas without installing" "install to hard disk" with dfferent behaviors || Sugar on a Stick (SoaS)<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2530 2530] || Custom titles for audio recordings || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2557 2557] || Record UI Improvement || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2572 2572] || sharing logic is broken || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2594 2594] || Start a translation team for the Amazighe Language || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2634 2634] || Tux Paint cursor is not sugarized || TuxPaint<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2637 2637] || browse to save .ta files to Journal || wiki.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2679 2679] || Paste blocks fail gracefully on error || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2697 2697] || Calculate should use an appropriate number of significant figures for trigonometric functions || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2698 2698] || Calculate allows default variables to be redefined || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2701 2701] || Calculate should let you export plotted graphs to the clipboard || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2705 2705] || Chat should note when a continuous string of characters extends beyond the end of the screen || Chat<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2750 2750] || Ability to move pins/motors once placed || Physics<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2761 2761] || parallelize the execution of turtles || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2787 2787] || Port Chat to new PS API || Chat<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2831 2831] || unintuitive switch back to capture mode || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2902 2902] || Allow Distance UI to layout on a 800x480 display || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2908 2908] || Add a lunar phase calendar view || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2909 2909] || Add an overhead Earth, Moon, Sun view || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2910 2910] || Add option to export the moon phase as an image to the Journal || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2911 2911] || Add eclipse glyph to indicate the type of eclipse || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2912 2912] || Allow Poll Builder UI to layout on a 800x480 display || Poll<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2922 2922] || Share improvement on calendar || Calendario<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2923 2923] || Journal integration for Calendar || Calendario<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2939 2939] || Drumbeats / TamTam || TamTam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/2988 2988] || When closing an unnammed activity, have option to erase it || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3110 3110] || Removable storage devices and in general entities with their own identities should have unique colors || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3111 3111] || Browse should have the option of allowing the user to only load text. || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3151 3151] || Add green line in Grid mode for terminator line || Moon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3154 3154] || Discard does not discard game || Memorize<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3185 3185] || Hot key for journal not present in frame tool tip. || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3249 3249] || Should Sweets be mentioned as an option for non-tech users as well || wiki.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3287 3287] || Journal: Found way to have mini-icons in "Anything" combobox and "Resume with" palette show as a white stroke || design<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3289 3289] || Globally changing "Works with" entries || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3308 3308] || Could you release new version with pt translation? || Record<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3393 3393] || Odd eToys L10n issue || Etoys<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3417 3417] || Spirolaterals should ask OLPC builds not to suspend while drawing || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3506 3506] || Chat should provide notification of new activity if scrollbar is not in the bottom position || Chat<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3523 3523] || Read use a prettier font for Epub || Read<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3583 3583] || Add faces to Maze || Maze<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3615 3615] || Add record or export to ogg buton to TamTamMini and TamTamJam || TamTam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3624 3624] || Calculate should save equations in history along with the generated plots || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3647 3647] || Hook up language control for l10n - migrated ticket || StoryBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3650 3650] || Add My Character and Add My Background || StoryBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3651 3651] || Collaboration functionality || StoryBuilder<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3693 3693] || Indiciate what architecture activities are for || activities.sugarlabs.org<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3735 3735] || Māori traditional instruments for TamTam || TamTam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3778 3778] || Load images when they are needed || TypingTurtle<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3881 3881] || Clock activity does not save state || Clock<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3882 3882] || Help activity does not save state || Help<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3897 3897] || Infoslicer needs to be able to help users go through Wiki disambiguation pages || InfoSlicer<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3966 3966] || Submit birthday on registration on SN server || sugar-client<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3978 3978] || FotoToon should have nice friendly help hint for new activity instances || FotoToon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/3979 3979] || Meta ticket of Activities that overflow in portrait orientation (mainly toolbars) || ActivityTeam<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4043 4043] || Add convert to pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4086 4086] || fototune enhancement: export as video || FotoToon<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4117 4117] || Touchscreen on screen keyboard || Labyrinth<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4138 4138] || Write: enable spellchecking || Write<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4292 4292] || Add Conozco Elementos Químicos to Pootle || localization<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4349 4349] || Improve Turtleart discoverability in Gnome || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4362 4362] || Waterfall view in Measure.. || Measure<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4649 4649] || Turtleblocks sensor calibrations for V193 || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4677 4677] || Provide an option to specify number of frames || Flipsticks<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4697 4697] || Enhancement: Terminal should have a dark grey background and colored text || Terminal<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4699 4699] || when your name is typed, irc activity icon could have the badge emblem-notification.svg || IRC<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4724 4724] || GetBooks: keep the information of the downloaded books || GetBooks<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4738 4738] || Copy paste dosen't work in calculate, also Ctrl+a(for entire selection) dosen't work. || Calculate<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4748 4748] || Develop should make bundle with Activity icon || Develop<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4774 4774] || Feature Request: Jump to action definition || Turtleart<br />
|-<br />
| [http://bugs.sugarlabs.org/ticket/4786 4786] || Proposal for a Sugar installer app for GNOME default installer software || packages.sugarlabs.org<br />
|}<br />
<br />
== Mentors ==<br />
;NOTES TO MENTORS:<br />
:Please refer to [[Google Code In 2014/Participate#Mentors]] for details regarding enrolling as a mentor.<br />
:Please add yourself to the list below.<br />
:Feel free to add new tasks to the table above.<br />
<br />
Depending on the project, we will assign multiple mentors from our various development and support teams.<br />
<br />
* Walter Bender - also org admin for GCI</div>Ignacio Rodríguez