<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>tutorial &#8211; tutolibro.org</title>
	<atom:link href="https://tutolibro.org/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>https://tutolibro.org</link>
	<description>Free online tutorials</description>
	<lastBuildDate>Tue, 21 Jan 2025 11:14:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://tutolibro.org/wp-content/uploads/2020/02/cropped-logo_mini-32x32.png</url>
	<title>tutorial &#8211; tutolibro.org</title>
	<link>https://tutolibro.org</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">173775150</site>	<item>
		<title>LibreOffice Calc &#038; Python Programming: Annex 0 – Version control with Git</title>
		<link>https://tutolibro.org/2020/02/06/libreoffice-calc-python-programming-annex-0-version-control-with-git/</link>
					<comments>https://tutolibro.org/2020/02/06/libreoffice-calc-python-programming-annex-0-version-control-with-git/#respond</comments>
		
		<dc:creator><![CDATA[gweno]]></dc:creator>
		<pubDate>Wed, 05 Feb 2020 23:17:17 +0000</pubDate>
				<category><![CDATA[LibreOffice]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[libreoffice]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tutorial]]></category>
		<guid isPermaLink="false">http://superbusydaddy.com/?p=660</guid>

					<description><![CDATA[This episode of my LibreOffice Calc &#38; Python Programming tutorial is a bit special. It is not about coding python scripts for LibreOffice, yet it is to learn a really useful method to track the different versions of your programs.We...<br /><a class="read-more-button" href="https://tutolibro.org/2020/02/06/libreoffice-calc-python-programming-annex-0-version-control-with-git/">Read more</a>]]></description>
										<content:encoded><![CDATA[



<p>This episode of my LibreOffice Calc &amp; Python Programming tutorial is a bit special. It is not about coding python scripts for LibreOffice, yet it is to learn a really useful method to track the different versions of your programs.<br>We are going to learn using <strong>Git</strong> for version control.</p>



<p>If you want to be serious about programming, you need to start using <span style="text-decoration: underline;">version control</span>, and the earlier the better. In this tutorial we will focus on keeping track of different versions of your programs and how to recover a previous version. I will only mention briefly the &#8216;branching&#8217; method because that method is more useful when working in a team.</p>



<p>Here is the plan for this Annex 0 of the tutorial:</p>



<ul class="wp-block-list">
<li>What is Git?</li>



<li>Install Git</li>



<li>How to use Git</li>



<li>GitHub</li>
</ul>



<h4 class="wp-block-heading">What is GIT?</h4>



<p>Git is a <strong>version control</strong> tool. It helps you to keep your programs tidy so that you don&#8217;t need for example to keep all the backups of all the different versions of a function within a program. For example, in the <a href="https://tutolibro.org/2019/08/16/libreoffice-calc-python-programming-part-2-hello-world/" target="_blank" rel="noreferrer noopener" label=" (opens in a new tab)">first coding tutorial</a> (which is actually part 2 of the series) of this series we wrote a helloworld function within the &#8216;helloworld.py&#8217; (python) file. Then in the <a href="https://tutolibro.org/2019/09/18/libreoffice-calc-python-programming-part-3-the-for-loop/" target="_blank" rel="noreferrer noopener" label=" (opens in a new tab)">second coding tutorial</a> (part 3&#8230;) you may have re-used that same file, like I did and then  added the new functions to it, and either deleted or commented the helloworld function within that &#8216;helloworld.py&#8217; file. Or even create a completely new file like &#8216;helloworld2.py&#8217;.</p>



<p>With Git (or any other version control system) you would &#8216;<strong>add</strong>&#8216; to a &#8216;<strong>Git repository</strong>&#8216; this first version , then you would &#8216;<strong>commit</strong>&#8216;  this same first version of &#8216;helloworld.py&#8217;. Once you have done a &#8216;commit&#8217; of a file you don&#8217;t need to worry about it, a version control tool like Git keeps the version safe in an hidden folder.<br>From then on you can delete the unwanted code in your file without having to make a copy of the file. You then repeat the process (&#8216;add&#8217;, &#8216;commit&#8217;) for your second version.</p>



<p>It is important to write <span style="text-decoration: underline;">a relevant comment when you commit changes</span> of your script/program. Then when you look at the <strong> log </strong>of the different versions you can choose which one you want to reverse to (<strong>check out</strong>).<br>Git is a command line version control system, meaning that you have no fancy colorful windows with menus and gizmos but it is simple, very common and does the work pretty well. There are several other version control systems like CVS, SVN, Mercurial. If you prefer managing your programs&#8217; different versions in a more graphical way there are some GUI available that are based on Git. One of them is an online Git GUI called &#8216;<strong>GitHub</strong>&#8216;. The big advantage of Git is that it is 100% compatible with this very famous GitHub. There are also many other online tools like BitBuckets, GitLab. I am personally very happy with Git and GitHub.<br></p>



<h4 class="wp-block-heading"> Install Git.</h4>



<p>As I am Super Busy Daddy, time is precious for me so please accept my apologies for sending you the <a rel="noreferrer noopener" label="linode website article on how to install Git (opens in a new tab)" href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" target="_blank">how to install Git</a>.<br>(You can choose your OS: Mac, Windows or Linux to get the relevant instructions).</p>



<p>Then once you&#8217;ve done it we can focus on how to use Git!</p>



<h4 class="wp-block-heading">How to use Git.</h4>



<ul class="wp-block-list">
<li>Create a Git Repository (a &#8216;Git Repo&#8217; for short) &#8211; <code>git init</code></li>



<li>Check the Repository status &#8211; <code>git status</code></li>



<li>Add files to the repo. &#8211; <code>git add .</code></li>



<li>Commit the changes &#8211; <code>git commit -m "My first commit!"</code></li>



<li>Check the log &#8211; <code>git log</code></li>



<li>Checkout a commit id &#8211; <code>git checkout <em>xxxxxxx</em></code></li>



<li>Working with branches &#8211; <code>git branch</code></li>



<li>Compare branches &#8211; <code>git diff <em>new-test</em></code></li>



<li>We can merge branches! &#8211; <code>git merge <em>new-test</em></code></li>
</ul>



<h5 class="wp-block-heading">Create a Git Repository (a &#8216;Git Repo&#8217; for short) &#8211; <code>git init</code></h5>



<p>Once you have successfully installed the program Git on your computer it works the same way on all different Operating Systems.</p>



<p>To use Git you have to type command lines within a Terminal. In Windows it&#8217;s the &#8216;CMD&#8217; or &#8216;Command prompt&#8217; accessible from Start Menu. In Linux and Mac, you need to use the &#8216;Terminal&#8217;:</p>



<p>Open a command prompt in Windows (XP, 7, 10): here we go again, it&#8217;s quite late already so instead of writing what other have already written please follow this link to <a rel="noreferrer noopener" aria-label="a relevant Lifewire article (opens in a new tab)" href="https://www.lifewire.com/how-to-open-command-prompt-2618089" target="_blank">a relevant Lifewire article</a> if you don&#8217;t know how to open a terminal in your OS.<br>Once you have your terminal open , simply use the command line to navigate to where your program is stored.<br>For example my program helloworld.py is stored in the linux hidden folder <code>'/home/gweno/.config/libreoffice/4/user/Scripts/python/MyPythonLibrary/Tutorial'</code><br>If you are using an IDE you can also use the terminal embedded within it like I do with Geany (check the <a href="https://tutolibro.org/2019/07/26/libreoffice-calc-python-programming-part-1-requirements/" target="_blank" rel="noreferrer noopener" label=" (opens in a new tab)">requirements post</a> of this series for more info on IDEs and Geany).  <br>So in the terminal of my Linux Mint System I type:</p>



<pre class="wp-block-code"><code>cd ~/.config/libreoffice/4/user/Scripts/python/MyPythonLibrary/Tutorial</code></pre>



<p>(In linux the ~ is the path for your home folder)<br>the command &#8216;cd&#8217; is for &#8216;change directory&#8217; and is the same for Windows and Mac.</p>



<p>Once you are in the correct folder, where for example &#8216;helloworld.py&#8217; is, <br>the way to create a new Git Repository (meaning a new folder where the Git program will store all the versions of your code) in its simplest way is the command line:</p>



<pre class="wp-block-code"><code>git init</code></pre>



<p>That is enough to get started with Version Control of your program files.<br>Of course there is much more that you can setup (<strong>git config</strong>). Like your user name, email address, an author name, a link with an online repository (like GitHub) if you have one, and other stuff but the intention here is to keep it simple because this is only an annex to help with LibreOffice/Python programming after all!</p>



<h5 class="wp-block-heading">Check the Repository status &#8211; <code>git status</code></h5>



<p>After initialising your Git Repository, you can check the status of this repository with:</p>



<pre class="wp-block-code"><code>git status</code></pre>



<p>You should see the following message on your screen:</p>



<pre class="wp-block-code"><code>Initialised empty Git repository in /home/gweno/.config/libreoffice/4/user/Scripts/python/MyPythonLibrary/Tutorial/.git/
</code></pre>



<p>That is a good start.</p>



<p>Then try to check the status of your new repo:</p>



<pre class="wp-block-code"><code>git status</code></pre>



<p>You should get something like that:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="http://tutolibro.org/wp-content/uploads/2019/11/pyCalc21.png" alt="" class="wp-image-668"/><figcaption class="wp-element-caption">The file is in red because it is not tracked by GIT yet.</figcaption></figure>



<h5 class="wp-block-heading">Add files to the repo. &#8211; <code>git add .</code></h5>



<p>So let&#8217;s add our helloworld in the tracking system with:</p>



<pre class="wp-block-code"><code>git add .</code></pre>



<p>The syntax is quite easy. The &#8216;.&#8217; above in &#8216;git add .&#8217; means add all files that are un-tracked. You can also add a specific file by doing &#8216;git add &lt;file name&gt;&#8217; for example:</p>



<pre class="wp-block-code"><code>git add Helloworld.py</code></pre>



<p>Now a &#8216;git status&#8217; should give us:</p>



<figure class="wp-block-image"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc22-1.png" alt="" class="wp-image-671"/></figure>



<p>So let&#8217;s just create a new empty file in the same directory.<br>We can call it test.txt and write a single line:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="http://tutolibro.org/wp-content/uploads/2019/11/pyCalc20.png" alt="" class="wp-image-667"/></figure>



<p>Another &#8216;git status&#8217; should show us this new file</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc23.png" alt="" class="wp-image-672"/></figure>



<p>What GIT is telling us is that for now there is currently 1 file staged for a commit, and the new file &#8216;test.txt&#8217; that is not staged yet. So the next step is to add this new file with a &#8216;git add .&#8217; (or &#8216;git add text.txt&#8217;).<br>Then a new git status should give us:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc24.png" alt="" class="wp-image-673"/></figure>



<h5 class="wp-block-heading">Commit the changes &#8211; <code>git commit -m "My first commit!"</code></h5>



<p>To &#8216;commit&#8217; these files to the repository, which means to keep them as they are at the time of the commit, we need to do so with a relevant comment that will help to know in the future what were the changes in these files.<br>The git command is &#8216;git commit -m &#8220;relevant message&#8221;, like this example:</p>



<pre class="wp-block-code"><code>git commit -m "My first git commit! With HelloWorld and a test file"</code></pre>



<p>Try yourself a new git status, you should see no files un-tracked.</p>



<p>Let&#8217;s then modify our &#8216;test.txt&#8217; file:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc25.png" alt="" class="wp-image-675"/></figure>



<p>After saving, another git add, another commit with a relevant message, we then have 2 different versions in the repository but only the last version, the current one is visible, there is only one version of each file visible in the directory. This is normal, the previous version is actually in the hidden git folder.</p>



<h5 class="wp-block-heading">Check the log &#8211; <code>git log</code></h5>



<p>To revert to the previous version or any other version in the log you need first to look at the git log and then &#8216;checkout&#8217; the commit number:</p>



<pre class="wp-block-code"><code>git log</code></pre>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc26.png" alt="" class="wp-image-676"/><figcaption class="wp-element-caption">You can see the 2 commits with your comments. And the long id numbers of the commits.</figcaption></figure>



<h5 class="wp-block-heading">Checkout a commit id &#8211; <code>git checkout <em>xxxxxxx</em></code></h5>



<p>You don&#8217;t need the full commit id number (called a hash number), you only need the 7 first character. So to reverse to the first commit in our case you&#8217;ll do:</p>



<pre class="wp-block-code"><code>git checkout f3de45b</code></pre>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc27.png" alt="" class="wp-image-677" style="width:722px;height:439px"/></figure>



<p>As you can see, once I have &#8216;checked out&#8217; the first version, I need to reload test.txt file. Once reloaded it is indeed back to its first version with only one line of text.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc28.png" alt="" class="wp-image-678"/></figure>



<p>From there you can make some new changes and create a <span style="text-decoration: underline;">new</span> branch what literally means that you are not going back to the second version.</p>



<p>You can also come back to your latest version by checking out the last commit number like in my case &#8216;git checkout 70d99b0&#8217;.</p>



<h5 class="wp-block-heading">Working with branches &#8211; <code>git branch</code></h5>



<p>There are actually many possibilities and scenarios that can be achieved with git. But let&#8217;s keep it simple for now and continue on this new branch also called a &#8216;Detached HEAD&#8217;. <br>Let&#8217;s add a new change in our test.txt file by adding a new line at the end:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc29.png" alt="" class="wp-image-679"/></figure>



<p>Then add the change to git (git add .), commit with a message and you will see that the commit is indeed on a &#8220;detached HEAD&#8221;. You can even display the branches with this useful git command:</p>



<pre class="wp-block-code"><code>git branch</code></pre>



<p>Which gives a clear idea of where we are:</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc30.png" alt="" class="wp-image-680" style="width:726px;height:35px"/></figure>



<p>The star tells on what branch we are. There are currently 2 branches:</p>



<ul class="wp-block-list">
<li> the master one that has you first and second commit</li>



<li>the new HEAD which is detached from your first commit</li>
</ul>



<p>Now let&#8217;s say that you want to include your new changes with what is the the &#8216;HEAD&#8217; of the &#8216;master&#8217; branch, which correspond to the second commit.<br>To do that we go back to our &#8216;master branch&#8217;</p>



<pre class="wp-block-code"><code>git checkout master</code></pre>



<p>But then oops!</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc31.png" alt="" class="wp-image-681"/></figure>



<p>This warning tells us that we also need to make the &#8216;detached HEAD&#8217; a proper new branch or we could risk losing the  changes we made.<br> To create a new branch a this point:</p>



<pre class="wp-block-code"><code>git branch new-test cc8f9b8</code></pre>



<p>Here the cc8f9b8 is the number of my last commit on the &#8216;Detached Head&#8217;. And &#8216;new-test&#8217; is the new branch&#8217;s name.<br>Command &#8216;git branch&#8217; now gives us:<br><img decoding="async" class="wp-image-682" style="width: 104px;" src="http://tutolibro.org/wp-content/uploads/2019/12/pyCalc32.png" alt=""><br>We are on Branch &#8216;master&#8217; and the other branch is called new-test.<br>And indeed after reloading file test.txt we are back to our second version, the second commit we did.</p>



<h5 class="wp-block-heading">Compare branches &#8211; <code>git diff <em>new-test</em></code></h5>



<p>To<span style="text-decoration: underline;"> merge</span> the version in the branch &#8216;new-test&#8217; with the version in the branch master it is common good practice to first check their <span style="text-decoration: underline;">diff</span>erences with this command:</p>



<pre class="wp-block-code"><code>git diff new-test</code></pre>



<p>So we are telling git to show us the differences between the HEAD of current branch (which is &#8216;master&#8217;) with the HEAD of the branch &#8216;new-test&#8217;. That gives us:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc33.png" alt="" class="wp-image-684"/></figure>



<p>It tells us that our current version on &#8216;master&#8217; has the green line but version on &#8216;new-test&#8217; doesn&#8217;t have it.<br>Both version have the white line.<br>The current version on &#8216;master&#8217; is missing the red line that the version on &#8216;new-test&#8217; has.</p>



<h5 class="wp-block-heading">We can merge branches! &#8211; <code>git merge <em>new-test</em></code></h5>



<p>So now we know the differences between the two HEADS, lets <span style="text-decoration: underline;">merge</span> them!</p>



<pre class="wp-block-code"><code>git merge new-test</code></pre>



<p>Depending on what editor/IDE you are using (see <a href="https://tutolibro.org/2019/07/26/libreoffice-calc-python-programming-part-1-requirements/">my article</a>) You may have a file opening automatically asking you to write a &#8216;commit message&#8217; when you merge. Just write something relevant, save and exit the file. This is because a merge is like a commit and it will appears in your &#8216;git log&#8217;.</p>



<p>And now our file on the HEAD of &#8216;master&#8217; is:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2019/12/pyCalc35.png" alt="" class="wp-image-686"/></figure>



<p>And indeed git status will show you the merge as a new commit.</p>



<h4 class="wp-block-heading">GitHub</h4>



<p>GitHub is an online git repository. GitHub allows you to store your programs and keep their different commits and branches online. It is a great tool to share your work, to work in as a team and to look for other people&#8217;s programs. And you can link your git repository with your gitHub repository making it very easy to publish your latest commit online.</p>



<p>So let&#8217;s me show you how you do that.<br>First you need to create an account on gitHub if you haven&#8217;t got one. It&#8217;s free if you are not bother to have public repositories of your programs, or you can choose a paid option if you want to keep your &#8216;reps&#8217; private.</p>



<p>Once you have an account, simply find the &#8216;new&#8217; (repository) button, give it a name, a few basic settings and then the magic can happen,&#8230; well after a few settings on your computer&#8217;s local git repository as well.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="431" height="116" src="https://tutolibro.org/wp-content/uploads/2020/03/lopy-annex0_0-1.png" alt="" class="wp-image-770" srcset="https://tutolibro.org/wp-content/uploads/2020/03/lopy-annex0_0-1.png 431w, https://tutolibro.org/wp-content/uploads/2020/03/lopy-annex0_0-1-300x81.png 300w" sizes="(max-width: 431px) 100vw, 431px" /><figcaption class="wp-element-caption">My own repository as an Example.</figcaption></figure>



<p>Once you have created your online repository you will get a link like<strong> in this <span style="text-decoration: underline;">example</span></strong>:<br>https://github.com/Gweno/tutolibro.tech.git</p>



<h6 class="wp-block-heading">(of course this is my github account and rep so don&#8217;t try to recreate it! It won&#8217;t work!<br>just use your own)</h6>



<p>Now it is time to go back to your terminal and use git to interact with GitHub.</p>



<ul class="wp-block-list">
<li>Link your GitHub and git repos &#8211; <code>git remote <em>...</em></code> </li>



<li>Push your git repo to your GitHub &#8211; <code>git push -u origin master</code></li>



<li>Clone other people GitHub repos &#8211; <code>git clone <em>...</em></code></li>
</ul>



<h5 class="wp-block-heading">Link your GitHub and git repos &#8211; <code>git remote <em>...</em></code></h5>



<p>You are going to use this link on your local repository, there is even instruction on the gitHub webpage to help you set up your rep.<br>But if your local rep is already set up, you only need to link it with the gitHub rep with this command:</p>



<pre class="wp-block-code"><code>git remote add origin https://github.com/Gweno/lopy-test.git</code></pre>



<h6 class="wp-block-heading">(you won&#8217;t be able to use that one for the same reason as before, it&#8217;s mine! This is just an example, use your own)</h6>



<p>You can check that your local git repository is attached with your online GitHub repository with this command:</p>



<pre class="wp-block-code"><code>git remote show origin</code></pre>



<h5 class="wp-block-heading">Push your git repo to your GitHub &#8211; <code>git push -u origin master</code></h5>



<p>Now that your local git rep is linked with your online one, your can &#8216;push&#8217; all your commits from your local rep to your gitHub with this command:</p>



<pre class="wp-block-code"><code>git push -u origin master</code></pre>



<p>You will then be prompt to enter your GitHub user name and password to let git connect directly to your GitHub repository.<br>And hopefully get a successful log like that one:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://tutolibro.org/wp-content/uploads/2020/02/pyCalc37.png" alt="" class="wp-image-691"/><figcaption class="wp-element-caption">git telling me that all is good!</figcaption></figure>



<h5 class="wp-block-heading">Clone other people GitHub repos &#8211; <code>git clone <em>...</em></code></h5>



<p>Now I can check my GitHub repository and see that all my commits are there with the latest commit being the current state of the files.<br>And now other people can download your code.<br>For example you can clone my repository on your local computer with this:</p>



<pre class="wp-block-code"><code>$ git clone https://github.com/Gweno/lopy-test.git</code></pre>



<h6 class="wp-block-heading">(this time you can use it as is and I encourage you to do so as I am happy to share this rep with you!)</h6>



<p>This tutorial only shows a small portion of what is possible to do with git and GitHub. There are a lot of very good articles and websites dedicated to git, GitHub and the likes.<br>Now I will work on more LibreOffice Python tutorials, I hope this one on git will be useful to you. It is a great tool to me and really helps once you start to write a lot of lines of codes.</p>



<p>This is the<a rel="noreferrer noopener" aria-label=" link to my repository (opens in a new tab)" href="https://github.com/Gweno/tutolibro.tech" target="_blank"> link to my repository</a> for this lesson on gitHub.</p>



<p>If you like this tutorial, you could <a href="https://buymeacoffee.com/tutolibro" data-type="link" data-id="https://buymeacoffee/tutolibro" target="_blank" rel="noreferrer noopener">buy me a coffee</a> to help me continue writing add-free tutorials.</p>



<p>Thank you!</p>



<div class="wp-block-group is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-0dfbf163 wp-block-group-is-layout-flex">

</div>
]]></content:encoded>
					
					<wfw:commentRss>https://tutolibro.org/2020/02/06/libreoffice-calc-python-programming-annex-0-version-control-with-git/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">660</post-id>	</item>
	</channel>
</rss>
