<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nicholasjanssen</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nicholasjanssen"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Nicholasjanssen/"/>
	<updated>2026-11-04T16:41:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Source_code&amp;diff=13585</id>
		<title>VLC Source code</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VLC_Source_code&amp;diff=13585"/>
		<updated>2009-03-01T18:20:34Z</updated>

		<summary type="html">&lt;p&gt;Nicholasjanssen: /* Development Sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Check the [http://www.videolan.org/developers/vlc/NEWS News].&lt;br /&gt;
&lt;br /&gt;
== Releases Sources ==&lt;br /&gt;
&lt;br /&gt;
=== Latest Source ===&lt;br /&gt;
&lt;br /&gt;
{{VLC}} Source Code can be downloaded here ({{VLC:latest version}})&lt;br /&gt;
: &#039;&#039;&#039;http://www.videolan.org/vlc/download-sources.html&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Older Source ===&lt;br /&gt;
&lt;br /&gt;
You can get all the versions of VLC, using the [http://download.videolan.org/pub/vlc/ VLC FTP Archive].&lt;br /&gt;
&lt;br /&gt;
You can also get it with the tags from the VLC&#039;s [[Git]].&lt;br /&gt;
&lt;br /&gt;
== Development Sources ==&lt;br /&gt;
&lt;br /&gt;
=== Latest source packages ===&lt;br /&gt;
If you want to get the latest bleeding edge development source package....(keep scrolling for the entire source tree)&lt;br /&gt;
&lt;br /&gt;
Go to this link [http://repo.or.cz/w/vlc.git http://repo.or.cz/w/vlc.git] and download the first listed tar.gz or .zip file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to get {{VLC}}&#039;s latest source tree ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is the recommended way if you are working on {{VLC}}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to use [[Git]] to download the latest, live snapshot of the development tree.&lt;br /&gt;
&lt;br /&gt;
Start by reading the [[Git]] page and then use the repository located at:&lt;br /&gt;
 git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
this is not nessary unless you want to download the entire git repository.. use the above link for the latest development build&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Get the nightly snapshots ===&lt;br /&gt;
&lt;br /&gt;
You can download the nightly snapshots on the [http://nightlies.videolan.org/build/source/?C=M;O=D nightlies website].&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]]&lt;br /&gt;
[[Category:Coding]]&lt;/div&gt;</summary>
		<author><name>Nicholasjanssen</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VLC_Source_code&amp;diff=13578</id>
		<title>VLC Source code</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VLC_Source_code&amp;diff=13578"/>
		<updated>2009-03-01T02:33:40Z</updated>

		<summary type="html">&lt;p&gt;Nicholasjanssen: /* How to get {{VLC}}&amp;#039;s latest source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Check the [http://www.videolan.org/developers/vlc/NEWS News].&lt;br /&gt;
&lt;br /&gt;
== Releases Sources ==&lt;br /&gt;
&lt;br /&gt;
=== Latest Source ===&lt;br /&gt;
&lt;br /&gt;
{{VLC}} Source Code can be downloaded here ({{VLC:latest version}})&lt;br /&gt;
: &#039;&#039;&#039;http://www.videolan.org/vlc/download-sources.html&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Older Source ===&lt;br /&gt;
&lt;br /&gt;
You can get all the versions of VLC, using the [http://download.videolan.org/pub/vlc/ VLC FTP Archive].&lt;br /&gt;
&lt;br /&gt;
You can also get it with the tags from the VLC&#039;s [[Git]].&lt;br /&gt;
&lt;br /&gt;
== Development Sources ==&lt;br /&gt;
=== How to get {{VLC}}&#039;s latest source ===&lt;br /&gt;
&lt;br /&gt;
if you want to get the latest bleeding edge development sources...&lt;br /&gt;
&lt;br /&gt;
go to this link&lt;br /&gt;
&lt;br /&gt;
http://repo.or.cz/w/vlc.git&lt;br /&gt;
&lt;br /&gt;
and download the first listed tar.gz or .zip file &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is the recommended way if you are working on {{VLC}}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to use [[Git]] to download the latest, live snapshot of the development tree.&lt;br /&gt;
&lt;br /&gt;
Start by reading the [[Git]] page and then use the repository located at:&lt;br /&gt;
 git://git.videolan.org/vlc.git&lt;br /&gt;
&lt;br /&gt;
this is not nessary unless you want to download the entire git repository.. use the above link for the latest development build&lt;br /&gt;
&lt;br /&gt;
=== Get the nightly snapshots ===&lt;br /&gt;
&lt;br /&gt;
You can download the nightly snapshots on the [http://nightlies.videolan.org/build/source/?C=M;O=D nightlies website].&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]]&lt;br /&gt;
[[Category:Coding]]&lt;/div&gt;</summary>
		<author><name>Nicholasjanssen</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Git&amp;diff=13577</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Git&amp;diff=13577"/>
		<updated>2009-03-01T02:19:05Z</updated>

		<summary type="html">&lt;p&gt;Nicholasjanssen: /* Getting VLC or x264 source code via Git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Git usage =&lt;br /&gt;
== Getting VLC or x264 source code via Git ==&lt;br /&gt;
 $ git clone git://git.videolan.org/vlc.git --depth 3&lt;br /&gt;
The last 3 VLC revisions should be on your hard disk in vlc/.&lt;br /&gt;
&lt;br /&gt;
 $ git clone git://git.videolan.org/vlc.git&lt;br /&gt;
Voilà! The full VLC history should be on your hard disk in vlc/.&lt;br /&gt;
&lt;br /&gt;
 $ git clone git://git.videolan.org/x264.git&lt;br /&gt;
Voilà! The full x264 history should be on your hard disk in x264/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can also clone using http with out repo.or.cz mirror.&lt;br /&gt;
 $ git clone http://repo.or.cz/r/vlc.git&lt;br /&gt;
&lt;br /&gt;
 $ git log&lt;br /&gt;
to see the full log of the trunk.&lt;br /&gt;
 $ gitk&lt;br /&gt;
to see the log graphically.&lt;br /&gt;
&lt;br /&gt;
You can also browse the sources via [http://git.videolan.org/ gitweb].&lt;br /&gt;
&lt;br /&gt;
== Configure your global git config ==&lt;br /&gt;
May need to use &lt;br /&gt;
$ git repo-config {various options} &lt;br /&gt;
1.4.4.2 Requires the repo-config command rather than just config&lt;br /&gt;
&lt;br /&gt;
=== Personal Information ===&lt;br /&gt;
Tell git your name. (use mostly by git-commit)&lt;br /&gt;
 $ git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
 $ git config --global user.email &amp;quot;me@example.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Using git with color (Tip) ===&lt;br /&gt;
If you want to use git with colored output use:&lt;br /&gt;
 $ git config --global color.ui true&lt;br /&gt;
&lt;br /&gt;
If you are using an old git version (prior to 1.5.5) and previous command didn&#039;t work, use:&lt;br /&gt;
 $ git config --global color.diff auto&lt;br /&gt;
 $ git config --global color.status auto&lt;br /&gt;
 $ git config --global color.branch auto&lt;br /&gt;
&lt;br /&gt;
=== Setting up &amp;quot;git up&amp;quot; (Tip) ===&lt;br /&gt;
If you want to be able to just keep in sync using &amp;quot;git up&amp;quot; use:&lt;br /&gt;
 $ git config --global alias.up &amp;quot;pull --rebase&amp;quot;&lt;br /&gt;
And if you like your tree to be messy and don&#039;t want git to complain (like in svn) use:&lt;br /&gt;
 $ git config --global alias.up &#039;!sh -c &amp;quot;git stash &amp;amp;&amp;amp; git pull --rebase &amp;amp;&amp;amp; git stash apply&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Setting up &amp;quot;git wu&amp;quot; (Git What&#039;s Up) (Tip) ===&lt;br /&gt;
If you want to see what you are about to &amp;quot;git push&amp;quot;:&lt;br /&gt;
 $ git config --global alias.wu &amp;quot;log --stat origin..@{0}&amp;quot;&lt;br /&gt;
Now use:&lt;br /&gt;
 $ git wu&lt;br /&gt;
&lt;br /&gt;
=== Setting up &amp;quot;git wup&amp;quot; (Git What&#039;s Up - with patch) (Tip) ===&lt;br /&gt;
If you want to see what you are about to &amp;quot;git push&amp;quot;, along with the diff:&lt;br /&gt;
 $ git config --global alias.wup &amp;quot;log -p origin..@{0}&amp;quot;&lt;br /&gt;
Now use:&lt;br /&gt;
 $ git wup&lt;br /&gt;
&lt;br /&gt;
== General GIT Workflow ==&lt;br /&gt;
1.  Make your file edits in your local repository.&lt;br /&gt;
&lt;br /&gt;
2.  &amp;quot;git commit&amp;quot;      the changes in your local repository&lt;br /&gt;
&lt;br /&gt;
3.  &amp;quot;git pull --rebase&amp;quot;  or &amp;quot;git up&amp;quot; (if you did &#039;&#039;git config --global alias.up &amp;quot;pull --rebase&amp;quot;&#039;&#039;) to bring the rest of your local repository up to date&lt;br /&gt;
&lt;br /&gt;
4.  &amp;quot;git log origin..master&amp;quot;    to check what you are going to commit&lt;br /&gt;
&lt;br /&gt;
4.  &amp;quot;git push&amp;quot;    to move your changes up to the master&lt;br /&gt;
&lt;br /&gt;
&amp;quot;git stash&amp;quot;    if you want to &amp;quot;hide&amp;quot; your changes.  Do this if you think there may be other commits against the same things you are working on and want to refresh your local checkout (using a git pull --rebase) from the master. Use &amp;quot;git stash apply&amp;quot; to get your stash back. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;git checkout -f master&amp;quot;     if you think your tree is pretty hopeless, need a kill-and-fill to bring the master into your local repository.&lt;br /&gt;
&lt;br /&gt;
== List the local branch ==&lt;br /&gt;
You can now list your local branch by doing&lt;br /&gt;
 $ git branch&lt;br /&gt;
which should ouput&lt;br /&gt;
 $ git branch&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
== List your local non committed changes ==&lt;br /&gt;
 $ git status | less&lt;br /&gt;
&lt;br /&gt;
== Commit ==&lt;br /&gt;
Now you can start to work on your tree. As soon as you feel you have reached a step in developement where you can commit your work &#039;&#039;&#039;locally&#039;&#039;&#039;, use&lt;br /&gt;
 $ git commit -a&lt;br /&gt;
or&lt;br /&gt;
 $ git commit &amp;lt;specific files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you wish to give credit to someone else&#039;s work (e.g. you are applying a third party patch):&lt;br /&gt;
 $ git commit &amp;lt;specific files&amp;gt; --author &amp;quot;Name Surname &amp;lt;user@domain.com&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== List your commits ==&lt;br /&gt;
 $ git log&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keeping your local working branch in sync ==&lt;br /&gt;
 $ git pull --rebase&lt;br /&gt;
&lt;br /&gt;
To shorten up that command type&lt;br /&gt;
 $ git config --global alias.up &amp;quot;pull --rebase&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now you can just type:&lt;br /&gt;
 $ git up&lt;br /&gt;
&lt;br /&gt;
== Use a graphical interface ==&lt;br /&gt;
 $ gitk          # Tree Browser&lt;br /&gt;
 $ qgit          # Tree Browser&lt;br /&gt;
 $ git-gui       # Commit/push/... editor&lt;br /&gt;
&lt;br /&gt;
== Submitting patches to the vlc-devel or x264-devel ==&lt;br /&gt;
&lt;br /&gt;
First make sure you have &#039;&#039;&#039;read&#039;&#039;&#039; our [[Sending Patches]] page. And that you&#039;ve &#039;&#039;&#039;read&#039;&#039;&#039; the [[Sending Patches#Check_List| Check List]].&lt;br /&gt;
&lt;br /&gt;
If you have been developing on vlc locally and (still) don&#039;t have write access, you can submit all your commits in one shot using:&lt;br /&gt;
 $ rm -Rf patches&lt;br /&gt;
 $ git format-patch -o patches origin&lt;br /&gt;
 $ git-send-email --to vlc-devel@videolan.org patches&lt;br /&gt;
If you have multiple patch consider using:&lt;br /&gt;
 $ git-send-email --compose --no-chain-reply-to --to vlc-devel@videolan.org patches&lt;br /&gt;
This will produce the patches for each local commit in the directory &amp;quot;patches&amp;quot; and send them.&lt;br /&gt;
Use --no-chain-reply-to make sure it doesn&#039;t reply.&lt;br /&gt;
&lt;br /&gt;
For x264, do the same with x264-devel@videolan.org&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- what does the following mean? --&amp;gt;&lt;br /&gt;
Don&#039;t do:&lt;br /&gt;
* [PATCH 0/m]&lt;br /&gt;
** [PATCH 1/m]&lt;br /&gt;
*** [PATCH 2/m]&lt;br /&gt;
**** ...&lt;br /&gt;
But do:&lt;br /&gt;
* [PATCH 0/m]&lt;br /&gt;
** [PATCH 1/m]&lt;br /&gt;
** [PATCH 2/m]&lt;br /&gt;
** ..&lt;br /&gt;
&lt;br /&gt;
= Advanced usage =&lt;br /&gt;
== Creating a secondary local branch ==&lt;br /&gt;
If you want to work on a specific project that could require a branch of the trunk, create a local branch of the current branch by doing:&lt;br /&gt;
 $ git branch mywork&lt;br /&gt;
and to actually use it do:&lt;br /&gt;
 $ git checkout mywork&lt;br /&gt;
Which could be summarized by:&lt;br /&gt;
 $ git checkout -b mywork&lt;br /&gt;
&lt;br /&gt;
Then do some commit on it... And you can go back to your original master branch by doing:&lt;br /&gt;
 $ git checkout master&lt;br /&gt;
&lt;br /&gt;
== Fetching a remote branch ==&lt;br /&gt;
To see the remote branch use:&lt;br /&gt;
 $ git branch -r&lt;br /&gt;
If the remote branch is named 0.8.6-bugfix&lt;br /&gt;
 $ git branch 0.8.6-bugfix origin/0.8.6-bugfix &lt;br /&gt;
 Branch 0.8.6-bugfix set up to track remote branch refs/remotes/origin/0.8.6-bugfix.&lt;br /&gt;
 $ git branch&lt;br /&gt;
  0.8.6-bugfix&lt;br /&gt;
  * master&lt;br /&gt;
To checkout that branch use:&lt;br /&gt;
 $ git checkout 0.8.6-bugfix&lt;br /&gt;
To stay up-to-date a simple&lt;br /&gt;
 $ git pull --rebase&lt;br /&gt;
Should be enough.&lt;br /&gt;
&lt;br /&gt;
If warnings appear that files still need updating:&lt;br /&gt;
 $ include/libvlc_internal.h: needs update&lt;br /&gt;
   include/mediacontrol_internal.h: needs update&lt;br /&gt;
   include/vlc/libvlc.h: needs update&lt;br /&gt;
   include/vlc_update.h: needs update&lt;br /&gt;
   modules/access/mms/mms.c: needs update&lt;br /&gt;
   ...&lt;br /&gt;
&lt;br /&gt;
Then do a checkout -f to revert non committed local changes&lt;br /&gt;
 $ git checkout -f&lt;br /&gt;
&lt;br /&gt;
To stay up-to-date another&lt;br /&gt;
 $ git pull --rebase&lt;br /&gt;
Should give no more warnings.&lt;br /&gt;
&lt;br /&gt;
To push to the remote branch, use:&lt;br /&gt;
 $git push origin 0.8.6-bugfix:0.8.6-bugfix&lt;br /&gt;
&lt;br /&gt;
== Creating a remote branch ==&lt;br /&gt;
If the new remote branch is named 0.9.0-bugfix, and is based on the local master branch.&lt;br /&gt;
First make sure everything go as planned with the --dry-run option:&lt;br /&gt;
 $ git push --dry-run origin master:refs/heads/0.9.0-stable&lt;br /&gt;
 To git@git.videolan.org:vlc.git&lt;br /&gt;
 * [new branch]      master -&amp;gt; 0.9.0-stable&lt;br /&gt;
&lt;br /&gt;
Then push it:&lt;br /&gt;
 $ git push origin master:refs/heads/0.9.0-stable&lt;br /&gt;
 To git@git.videolan.org:vlc.git&lt;br /&gt;
 * [new branch]      master -&amp;gt; 0.9.0-stable&lt;br /&gt;
 $ git branch -r&lt;br /&gt;
  origin/0.9.0-stable&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
To checkout that branch now see &#039;&#039;Fetching a remote branch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Publishing your own fork ==&lt;br /&gt;
Goto [http://repo.or.cz/w/vlc.git http://repo.or.cz/w/vlc.git] and click [http://repo.or.cz/m/regproj.cgi?name=vlc/ fork]. You will be able to publish your work there.&lt;br /&gt;
&lt;br /&gt;
Please don&#039;t forget to send a mail to the vlc-devel as soon as you create your fork.&lt;br /&gt;
&lt;br /&gt;
== Revert your non-committed local changes ==&lt;br /&gt;
 $ git checkout -f&lt;br /&gt;
&lt;br /&gt;
==Edit or undo not yet pushed commits ==&lt;br /&gt;
This will undo the last commit&lt;br /&gt;
 $ git reset HEAD^&lt;br /&gt;
which is the same as&lt;br /&gt;
 $ git reset master^&lt;br /&gt;
(if your checked-out copy of your tree is master)&lt;br /&gt;
And also the same as&lt;br /&gt;
 $ git reset a44a594 # note that there is no need to use the full sha id&lt;br /&gt;
&lt;br /&gt;
If you have a stack of patch that you have not yet committed you can delete one patch from the list using git rebase --interactive&lt;br /&gt;
 $ git rebase --interactive origin&lt;br /&gt;
  pick eacf185 test&lt;br /&gt;
  pick 56322eb VLMA owner is vlma prod.&lt;br /&gt;
 &lt;br /&gt;
  # Rebase 826757e..56322eb onto 826757e&lt;br /&gt;
  #&lt;br /&gt;
  # Commands:&lt;br /&gt;
  #  pick = use commit&lt;br /&gt;
  #  edit = use commit, but stop for amending&lt;br /&gt;
  #  squash = use commit, but meld into previous commit&lt;br /&gt;
&lt;br /&gt;
== Diff-ing ==&lt;br /&gt;
* You can diff between two branches using&lt;br /&gt;
 $ git diff branch1 branch2&lt;br /&gt;
* You can diff between the previous 10th commit and current using&lt;br /&gt;
 $ git diff HEAD~10 HEAD&lt;br /&gt;
* You can diff between the previous 10th commit and current of the branch &amp;quot;mywork&amp;quot; using&lt;br /&gt;
 $ git diff mywork~10 mywork&lt;br /&gt;
* Imagine that git log is like&lt;br /&gt;
 $ git log&lt;br /&gt;
 commit e0394f269305edd09843257e7c1d1a66aaf48ab3&lt;br /&gt;
 Author: jb &amp;lt;jb&amp;gt;&lt;br /&gt;
 Date:   Fri Apr 13 07:14:48 2007 +0000&lt;br /&gt;
    qt4 - Mousewheel (2)&lt;br /&gt;
 commit e80b339081aa6755f67c9bd8e2aacf93a9a79d95&lt;br /&gt;
 [..]&lt;br /&gt;
 commit ff7004b70fd239e4120deb160e2991bd5237b8df&lt;br /&gt;
 [..]&lt;br /&gt;
 commit a44a594898f981a145cfcace5f16f8973f9eb46f&lt;br /&gt;
 [..]&lt;br /&gt;
 commit 690df705c963cf6bf6f5746d54bc97a85ff91919&lt;br /&gt;
 [..]&lt;br /&gt;
 commit 679f8b1c3e0baa469efa970588b95a625c595d64&lt;br /&gt;
 [..]&lt;br /&gt;
&lt;br /&gt;
 $ git diff a44a594898f981a145cfcace5f16f8973f9eb46f~2 e80b339081aa6755f67c9bd8e2aacf93a9a79d95&lt;br /&gt;
Will be equivalent to:&lt;br /&gt;
 $ git diff ff7004b70fd239e4120deb160e2991bd5237b8df e80b339081aa6755f67c9bd8e2aacf93a9a79d95&lt;br /&gt;
And to:&lt;br /&gt;
 $ git diff HEAD~4 HEAD^&lt;br /&gt;
&lt;br /&gt;
* Remember that to produce a patch you should rather use git-format-patch than git-diff most of the time.&lt;br /&gt;
&lt;br /&gt;
== Tracking regression ==&lt;br /&gt;
git has a great tool called [http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html git-bisect] to help you to track a faulty commit. Imagine you are tracking a bug that is known to appear after 0.8.6 (assuming 0.8.6 is tagged):&lt;br /&gt;
 $ git bisect start&lt;br /&gt;
 $ git bisect bad # tell git current version has the bug you are tracking&lt;br /&gt;
 $ git bisect good 0.8.6 # tell git 0.8.6 didn&#039;t has the bug&lt;br /&gt;
And then git will checkout a certain revision, and ask you to test it. And you simply say whether this version has the bug.&lt;br /&gt;
If it has the bug:&lt;br /&gt;
 $ git bisect bad&lt;br /&gt;
if the bug is not present:&lt;br /&gt;
 $ git bisect good&lt;br /&gt;
And so on by bisection... At the end git will indicate the faulty commit. Most of the time this tool is really efficient to track regression.&lt;br /&gt;
&lt;br /&gt;
If you can provide a script that test the presence of the bug &lt;br /&gt;
 $ git bisect run &amp;lt;script_name&amp;gt;&lt;br /&gt;
will be able to track down the regression by itself. See [http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html git-bisect Documentation].&lt;br /&gt;
&lt;br /&gt;
= Using Git to push to VideoLAN git =&lt;br /&gt;
== Initial requirement ==&lt;br /&gt;
* Make sure you&#039;ve set your name and email in your commits&lt;br /&gt;
 $ git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
 $ git config --global user.email &amp;quot;me@example.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Convert your tree to use your ssh push commit access ==&lt;br /&gt;
 $ vi vlc/.git/config&lt;br /&gt;
And replace git://git.videolan.org/vlc.git by git@git.videolan.org:vlc.git&lt;br /&gt;
&lt;br /&gt;
== Staying up to date ==&lt;br /&gt;
  $ git pull --rebase&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to have to type --rebase everytime you pull do:&lt;br /&gt;
 $ git config branch.master.rebase true&lt;br /&gt;
&lt;br /&gt;
This one creates a merge object which is not how SVN worked, so let&#039;s use the first version...&lt;br /&gt;
  $ git pull&lt;br /&gt;
&lt;br /&gt;
== Pushing your work ==&lt;br /&gt;
  $ git log origin..master     # Check what you are going to push&lt;br /&gt;
  $ git push&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GSoC 2007&lt;br /&gt;
= Using Git to publish your work (for SoC student?) =&lt;br /&gt;
First get the official VLC &#039;&#039;&#039;Soc&#039;&#039;&#039; trunk&lt;br /&gt;
 $ git clone git://git.videolan.org/vlc-soc.git&lt;br /&gt;
 $ cd vlc-soc&lt;br /&gt;
Ask for write access to a branch (called your_name_branch). Now we will make git know that you want to publish on this branch&lt;br /&gt;
 $ git config remote.my_soc_public_branch.url ssh://your_name@altair.videolan.org/home/videolan/gitroot/vlc-soc.git&lt;br /&gt;
Now tell git that you want to automatically push the local master branch to the public your_name_branch:&lt;br /&gt;
 $ git config remote.my_soc_public_branch.push +master:your_name_branch # the &amp;quot;+&amp;quot; will tell git to force update ignoring conflicts&lt;br /&gt;
&lt;br /&gt;
Do some work and commit it to your master branch.&lt;br /&gt;
 $ git commit -a&lt;br /&gt;
You can also sync with the trunk (origin) as needed&lt;br /&gt;
 $ git pull --rebase origin&lt;br /&gt;
And don&#039;t forget to publish your changes:&lt;br /&gt;
 $ git push my_soc_public_branch&lt;br /&gt;
Now you should be able to see your latest changes in your branch via [http://git.videolan.org/ gitweb].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows users ==&lt;br /&gt;
&#039;&#039;&#039;Note for Windows users using [http://www.cygwin.com Cygwin] (linux-like build environment):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Applies to:&lt;br /&gt;
&lt;br /&gt;
 Windows XP Service Pack 2 with Security Update &#039;&#039;&#039;KB925902&#039;&#039;&#039; installed&lt;br /&gt;
 Windows XP Service Pack 3&lt;br /&gt;
&lt;br /&gt;
There is a problem on Windows XP (and possibly on other Microsoft Operating Systems) with &#039;git clone&#039; which aborts unexpectedly with a Cygwin error during the &#039;checking out files&#039; (reproducable every time and at the same percentage) at the end of the clone procedure:&lt;br /&gt;
&lt;br /&gt;
 $ 2 [main] git 4012 D:\cygwin\bin\git.exe:&lt;br /&gt;
   *** fatal error - &#039;&#039;&#039;could not load shell32, Win32 error 487&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This has been verified (May 22, 2008) against the currently available Cygwin 1.5.25-12 with git package versions 1.5.5.1-1 and 1.5.4-1 and is a generic problem which also affects cloning from other git repositories (although x264.git seems unaffected).&lt;br /&gt;
&lt;br /&gt;
The issue is referred to in the mail archives of the Cygwin project mailing list here &lt;br /&gt;
[http://sourceware.org/ml/cygwin/2007-07/msg00858.html Git error on Cygwin].&lt;br /&gt;
&lt;br /&gt;
By eliminating the impossible, whatever remained, however improbable, it is the following Windows Security Update (April 3, 2007) which is actually the cause of the Cygwin issue: [http://www.microsoft.com/technet/security/bulletin/ms07-017.mspx Microsoft Security Bulletin MS07-017 - Vulnerabilities in GDI Could Allow Remote Code Execution (925902)]&lt;br /&gt;
&lt;br /&gt;
Even though the same Security Update applies to the following systems, these are reported not to be affected:&lt;br /&gt;
&lt;br /&gt;
 Windows Vista Service Pack 1&lt;br /&gt;
 Windows 2003 Server Standard Service Pack 2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;It is possible to get &#039;git clone&#039; working again on the affected systems by removing the Security Update (KB925902) but this is obviously not recommended for security reasons.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
To use git with Cygwin (for WinXP) do this:&lt;br /&gt;
&lt;br /&gt;
[Start][Run] and type &amp;quot;cmd&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Change to the directory where you desire to download x264 to:&lt;br /&gt;
&lt;br /&gt;
cd c:\ffmpeg-SVN\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have installed Cygwin in the standard location then type this:&lt;br /&gt;
&lt;br /&gt;
C:\ffmpeg-SVN\&amp;gt;c:\cygwin\bin\git clone git://git.videolan.org/x264.git&lt;br /&gt;
&lt;br /&gt;
Initialized empty Git repository in /cygdrive/c/ffmpeg-SVN/x264/.git/&amp;lt;br&amp;gt;&lt;br /&gt;
remote: Generating pack...&amp;lt;br&amp;gt;&lt;br /&gt;
remote: Done counting 6710 objects.&amp;lt;br&amp;gt;&lt;br /&gt;
remote: Deltifying 6710 objects...&amp;lt;br&amp;gt;&lt;br /&gt;
remote:  100% (6710/6710) done&amp;lt;br&amp;gt;&lt;br /&gt;
remote: Total 6710 (delta 5345), reused 156 (delta 123)                :&amp;lt;br&amp;gt;&lt;br /&gt;
Receiving objects: 100% (6710/6710), 1.63 MiB | 25 KiB/s, done.&amp;lt;br&amp;gt;&lt;br /&gt;
Resolving deltas: 100% (5345/5345), done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can use Cygwin&#039;s git under the DOS shell but if you try the same &lt;br /&gt;
command under the Cygwin (Bash) shell you get an error message.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= Documentation about git =&lt;br /&gt;
* [http://git.or.cz/ Official Git Website]&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/tutorial.html Git Tutorial]&lt;br /&gt;
* [http://git.or.cz/course/svn.html Switching from SVN to git using cogito]&lt;br /&gt;
* [http://wiki.sourcemage.org/Git_Guide Very good Git guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]]&lt;/div&gt;</summary>
		<author><name>Nicholasjanssen</name></author>
	</entry>
</feed>