Difference between revisions of "Newbie Guide for Windows Users"

From Dreamwidth Notes
Redirect page
Jump to: navigation, search
m
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Note|text=Feel free to correct, expand, do anything which could make this better and clearer. ^_^}}
+
#REDIRECT [[Newbie_Guide:_Getting_Started_on_Windows]]
 
+
= Contributor Licensing Agreement =
+
 
+
The very first thing you need to do is [[Contributor_Licensing_Agreement|read and sign your CLA]] and mail it to Denise. If you don't agree with its terms Dreamwidth won't be able to accept your code; if you've submitted code but Denise doesn't have your CLA your code can't be added. So read, think it over, sign, mail then wait until you're told it's been received. You can then get started.
+
 
+
 
+
= What do you need and why? =
+
 
+
Because you're on Windows, you have to use quite a number of tools to access and manage things so this part might seem a little daunting. The good news is that 1) you're used to being flexible and resourceful, right? 2) once you've got everything set up things will be much simpler and intuitive.
+
 
+
So what do you need?
+
 
+
# You need a github.com account to be able to fetch the Dreamwith code, create your own copies of it, and upload your own changes. This is both where all the Dreamwidth code comes from and where your own code will end on but it's only a gateway: you can't do much on the site itself.
+
# You need a Dreamhack to see what your changes will do on the site for real. Think of a Dreamhack as an online mirror of the Dreamwidth site which you get to play with and modify.
+
# You need PuTTY to connect GitHub to your Dreamhack, to connect your Dreamhack to GitHub, and access and manage everything. In short, PuTTY is your true command center.
+
# You need WinSCP to visualize your Dreamhack files and be able to open them in a text editor. It's pretty much like Explorer for your Dreamhack.
+
# You need a text editor to edit your files.
+
# You need a Bugzilla account to find and files bugs.
+
 
+
Each section mentions where you need to do things so you won't get lost.
+
 
+
== Create an account on GitHub ==
+
 
+
Go to [http://www.github.com/ GitHub], click on 'sign up and pricing' and create a free account. I suggest you pick a username people are familiar with and the same username you'll have on your Bugzilla account.
+
 
+
 
+
== Get a Dreamhack ==
+
 
+
Apply for a Dreamhack by [http://hack.dreamwidth.net/apply.shtml filling this form]. The two important fields are 'your desired username' and 'your email address'. Your username is used to manage your Dreamhack and create the URL where your Dreamhack will be located at so you can pick anything. Your email address is used to send you a welcome e-mail which contains important information as well as various alerts. You can pick any of your existing email addresses or choose to create an email account entirely devoted to your development work.
+
 
+
Once you're done, you should get an e-mail with your login username and a password. Don't lose it.
+
 
+
 
+
== Install PuTTY ==
+
 
+
* Download 'Windows installer for everything except PuTTYtel' .exe file at [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] and install it.
+
 
+
* Run PuTTY. In the configuration window, enter "hack.dreamwidth.net" for the host name. Go to Connection/Data and enter the username/login given to you in the welcome e-mail. It should be something like dh-username.
+
 
+
* Click on Open. If you get a pop-up message about a key, click Yes.
+
 
+
* Enter the password given to you in the welcome e-mail when asked. Note that no characters are displayed and the cursor won't move. It's normal.
+
 
+
* Change your password by typing:
+
<syntaxhighlight lang="bash">passwd</syntaxhighlight>
+
 
+
* Your default Dreamhack account is called 'system'. Set its password with this command:
+
 
+
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/make_system.pl</syntaxhighlight>
+
 
+
 
+
== Install WinSCP ==
+
 
+
* Install [http://winscp.net/eng/download.php WinSCP]. During the installation, you may be asked about the mode you prefer: Commander and Explorer. Commander works like an FTP client: a partitioned window with your computer files on one side and the Dreamhack files on the other. Explorer will only display your Dreamhack files and works like Windows's Explorer. Either mode is fine. Pick what you're most used to.
+
 
+
* Use "hack.dreamwidth.net" for the host name. Enter your username and the password you typed when you did <code>passwd</code> on PuTTY. Click on Save then on Login.
+
 
+
 
+
== Get a good text editor ==
+
 
+
While you can use Notepad, I recommend [http://notepad-plus-plus.org/download/ Notepad++] instead. It's free, simple and will make editing much easier.
+
 
+
 
+
== Create a Bugzilla account ==
+
 
+
Simply [http://bugs.dwscoalition.org/createaccount.cgi click here]. Go to [http://bugs.dwscoalition.org/userprefs.cgi?tab=account Name and Password] and enter your name following this format: <code>Name [:username]</code> as per <dwuser>mark</dwuser>'s [http://dw-dev.dreamwidth.org/17146.html instructions.] 'Name' can be your real name, a nickname, your username again, etc. Pick what you're comfortable with.
+
 
+
 
+
= Set things up =
+
 
+
== On your GitHub account ==
+
 
+
You need to fork the Dreamwidth code onto your own account. Forking is like cloning and branching. It will copy the code and also label your copy as being a branch (a fork) of the original Dreamwidth code so that everybody knows the two are connected.
+
 
+
Dreamwidth is divided into two parts: an open-source part called 'dw-free', and a private part called 'dw-nonfree'. The private part is composed of elements which are specific to dreamwidth.org and can't be used on other sites (e.g. the logo) and external elements Dreamwidth is allowed to use on its own site but not redistribute to other sites.
+
 
+
* To fork the free part go to https://github.com/dreamwidth/dw-free and click on Fork on the upper right corner.
+
 
+
* To fork the nonfree part go to to https://github.com/dreamwidth/dw-nonfree and do the same.
+
 
+
 
+
== On your Dreamhack ==
+
 
+
Now you need to 'import' both of these onto your Dreamhack and link them to the original Dreamwidth repositories on GitHub so you can easily fetch updates.
+
 
+
To do so, [[Moving_your_Dreamwidth_installation_to_use_Github#Stop_the_server_and_all_workers | follow all the steps from this point on until you start your server again]] (but skip the 'non-dreamhack users' section).
+
 
+
 
+
== Further configuration steps ==
+
 
+
These are not mandatory but will certainly make your life easier.
+
 
+
=== Change some git settings ===
+
 
+
In PuTTY, I suggest going through [[Git_settings#Recommended_settings|all the steps mentioned in this section]].
+
 
+
 
+
=== Give special abilities to your system account ===
+
 
+
* Log in to your Dreamhack (http://www.USERNAME.hack.dreamwidth.net/) using system and your password for this account.
+
 
+
* Go to [http://www.USERNAME.hack.dreamwidth.net/admin/priv/ http://www.USERNAME.hack.dreamwidth.net/admin/priv/]. Click on 'payments' type 'system' in the User field then click on 'Make Changes'. The system account now has the ability (called 'privilege' or 'priv') to give paid time to any account.
+
 
+
* Go to [http://www.USERNAME.hack.dreamwidth.net/admin/pay http://www.USERNAME.hack.dreamwidth.net/admin/pay]. Type 'system' in the Edit user field and click on Go. Make your account a seed one.
+
 
+
 
+
=== Get rid of invite codes ===
+
 
+
* In WinSCP, go to <code>/dw/ext/local/etc/</code>, and double-click on <code>config.pl</code>. Find <code>$USE_ACCT_CODES = 1;</code> and change 1 to <code>0</code>. Save your file.
+
 
+
* In PuTTY, type this to make the changes go live on your Dreamhack:
+
 
+
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/update-db.pl -r -p --innodb
+
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb
+
$LJHOME/bin/upgrading/texttool.pl load</syntaxhighlight>
+
 
+
* If you're concerned about spam, you may want to create a promo code instead. Go to http://www.USERNAME.hack.dreamwidth.net/admin/invites/promo?state=active and click on 'Create New'. Enter a code name and a number (you can edit the number later if you're about to run out of invites).
+
 
+
 
+
=== Customize PuTTY and Notepad++ ===
+
 
+
See these articles for details: [[PuTTY]], [[Editor:_Notepad_plus_plus | Notepad++]].
+
 
+
 
+
= Make sure things are up-to-date =
+
 
+
Important: in PuTTY, you can get explanations about bash commands using <code>help COMMAND</code> (e.g. <code>help cd</code>) and any git commands using <code>git COMMAND -h</code> (e.g <code>git pull -h</code>).
+
 
+
 
+
== Update your code ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
Code is committed by developers all the time. You must always update your repositories before you do anything else.
+
 
+
* Go to [[Dev_Maintenance#dwu_-_Updating_the_repos | this article]] and enter all the code listed in the second, bigger section for both dw-free and dw-nonfree (but don't enter the lines starting with #).
+
 
+
* You can also create a script to make this process simpler as explained in the article.
+
 
+
* Make sure to check for updates to see if the script has changed.
+
 
+
: N.B. To create a new file open WinSCP, right click into the correct folder (<code>/bin</code> here) then click on New/File.
+
 
+
 
+
== Update your database ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
* We're already seen this once but here it is again:
+
 
+
<syntaxhighlight lang="bash">$LJHOME/bin/upgrading/update-db.pl -r -p --innodb
+
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb
+
$LJHOME/bin/upgrading/texttool.pl load</syntaxhighlight>
+
 
+
* You can also create a script to make this process simpler: see [[Dev_Maintenance#dwdb_-_Updating_the_database | this article]].
+
 
+
 
+
= Make changes to your local code =
+
 
+
== Find or file a bug ==
+
 
+
<strong>--> in Bugzilla</strong>
+
 
+
* To find: you can use [http://bugs.dwscoalition.org/userprefs.cgi?tab=saved-searches predefined searches] such as [http://bugs.dwscoalition.org/buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=unassigned%20effort-minor&sharer_id=2 unassigned effort-minor].
+
 
+
: Some of these bugs may not appear to be 'minor' to you. No worries. There are usually a few tiny bugs which only require small changed to be done on one of the site pages (text to edit; elements to move, remove, add or hide from certain categories of users, etc.).
+
 
+
* To file: make sure it's not already been filed using [http://bugs.dwscoalition.org/query.cgi?format=specific simple search] or [http://bugs.dwscoalition.org/query.cgi?format=advanced advanced search] then [http://bugs.dwscoalition.org/enter_bug.cgi?product=Dreamwidth%20Development use this form] to file a new bug. Fill and edit the fields as needed.
+
 
+
* To assign a bug to yourself, click on Take next to Assign To and set the status to IN_PROGRESS.
+
 
+
 
+
== Create a local branch stemming from develop ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
* Pick the correct repository:
+
** if you want to work in dw-free you need to be in <code>~/dw$</code>. If you're not type <code>cd $LJHOME</code>.
+
** if you want to work in dw-nonfree you need to be in <code>~/dw/ext/dw-nonfree$</code>. If you're not type <code>cd $LJHOME/ext/dw-nonfree</code>
+
 
+
* Then make sure you're in the develop branch using the <code>checkout</code> command:
+
 
+
<syntaxhighlight lang="bash">git checkout develop</syntaxhighlight>
+
 
+
* Now you can create a new branch specifically dedicated to the bug you want to work on using the <code>branch</code> command.
+
 
+
<syntaxhighlight lang="bash">git branch BRANCHNAME</syntaxhighlight>
+
 
+
: N.B. It is best if you use the bug number and a short description as your branch name: <code>bug####/short_description</code>
+
 
+
* To switch to this branch, use the <code>checkout</code> command again:
+
 
+
<syntaxhighlight lang="bash">git checkout BRANCHNAME</syntaxhighlight>
+
 
+
* You can also create and switch to a branch at the same time using:
+
 
+
<syntaxhighlight lang="bash">git checkout -b BRANCHNAME</syntaxhighlight>
+
 
+
* Finally you can also create and switch to a branch and make sure it stems from develop using:
+
 
+
<syntaxhighlight lang="bash">git checkout -b BRANCHNAME develop</syntaxhighlight>
+
 
+
* And that's it. Now you can start coding!
+
 
+
 
+
== Work, work, work ==
+
 
+
<strong>--> in WinSCP and your editor</strong>
+
 
+
* In WinSCP right click to edit the file you want to work on.
+
 
+
* Remember that the free part of the code is in <code>~/dw/*</code> while the non-free part is in <code>~/dw/ext/dw-nonfree/*</code>.
+
 
+
* If you're working on site pages, you're working on .bml files. These are in <code>~dw/htdocs/</code> or one of the subsequent folders. You'll see that their names correspond to the URLs of site pages. These files may use .pm modules/widgets which are in <code>~dw/cgi-bin/LJ/</code> or <code>~dw/cgi-bin/DW/</code>.
+
 
+
* For text strings which are not in <code>~dw/htdocs/xxx.bml.text</code> files, see <code>~dw/bin/upgrading/en.dat</code>.
+
 
+
* For more specific searches, see [[Dev_Finding_Things|this article]] on how to use <code>rgrep</code> and <code>find</code>.
+
 
+
 
+
== Test your changes ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
* Stop your Dreamhack:
+
<syntaxhighlight lang="bash">stop-apache</syntaxhighlight>
+
 
+
* [[#Update_your_database|Update your database]] (type <code>dwdb</code> instead if you've created a script for it).
+
 
+
* Start your Dreamhack again:
+
<syntaxhighlight lang="bash">start-apache</syntaxhighlight>
+
 
+
<strong>--> on your Dreamhack</strong>
+
 
+
* Go to your Dreamhack and test. Edit the files again in WinSCP if more changes are needed. Go through these steps again to test your new changes.
+
 
+
 
+
== Mark your local changes as ready to be committed ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
Before being committed, work is moved to a staging area. Think of it as the "Ready? Steady?" before the "Go!". At this point nothing is definite and you can easily change things.
+
 
+
* You can add your changes to the staging ('pre-commit') area using the <code>add</code> command:
+
 
+
<syntaxhighlight lang="bash">git add FILENAME</syntaxhighlight>
+
 
+
* To add all files which have been updated at once you can use:
+
 
+
<syntaxhighlight lang="bash">git add -u</syntaxhighlight>
+
 
+
* To add all files which have been added or updated at once use this instead:
+
 
+
<syntaxhighlight lang="bash">git add .</syntaxhighlight>
+
 
+
* If you realize you need to do some more work, edit files again and use <code>add</code> again when you're done. It's that simple.
+
 
+
 
+
== Commit your changes locally ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
* If you think you're done with your work at this point you can commit your changes locally using the <code>commit</code> command:
+
 
+
<syntaxhighlight lang="bash">git commit</syntaxhighlight>
+
 
+
* This will open the nano editor so you can type a commit message. Unfortunately, nano isn't very easy to type into (you can't use the number pad for instance) so I advise you to type your commit message in your text editor then paste it in nano (right click in PuTTY to paste).
+
 
+
* Here's an example of commit message (no blanks between lines, though):
+
 
+
Bug #123 - Subject
+
 
+
Bugzilla URL
+
 
+
Patch description
+
 
+
Description can go on several short lines.
+
 
+
* Hit Ctrl+X, 'y' then enter to save your message.
+
 
+
* If you you need to do some more work later you can update your commit using <code>--amend</code>:
+
 
+
<syntaxhighlight lang="bash">git commit --amend</syntaxhighlight>
+
 
+
: N.B. You can also do this if you need to edit your commit message.
+
 
+
* If you want to pace yourself or be easily able to go back to a certain point in your work you can do successive commits instead of one big final one.
+
 
+
 
+
= Go from local to global =
+
 
+
== Push the changes to your github.com repository ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
You should only push your local changes to your develop branch on github.com once you're happy with your patch as things are a bit harder to change at this point. Once you've finished your work use the <code>push</code> command and the branch name:
+
 
+
<syntaxhighlight lang="bash">git push origin BRANCHNAME</syntaxhighlight>
+
 
+
 
+
== Request your changes to be pulled into the main code ==
+
 
+
<strong>--> on github.com</strong>
+
 
+
On your GitHub page, click on the correct repository (dw-free or dw-nonfree), select the correct branch in the branch drop-down menu (below 'Clone in Windows') then click on Pull Request below.
+
 
+
: N.B. If there's a delay between the moment you pushed your branch and the moment it appears on GitHub, [https://status.github.com/ check its status page], wait and refresh. (^_^)
+
 
+
 
+
== Mention the pull request ==
+
 
+
<strong>--> in Bugzilla</strong>
+
 
+
* Comment on the bug with a link to your pull request.
+
 
+
* Wait for someone to review and commit your patch. You're done! \o/
+
 
+
 
+
= But I wanna know more! =
+
 
+
== Deeper understanding of the workflow ==
+
 
+
If you want to understand the workflow better I suggest reading the 'workflow', 'add & commit" and 'pushing changes' sections of [http://rogerdudler.github.com/git-guide/index.html Git - The Simple Guide]. It has very simple, clear explanations and a drawing, which helps.
+
 
+
 
+
== How to check things ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
Note: to exit code views, hit the 'q' key.
+
 
+
* To check which local branch you're on (noted with an asterisk):
+
 
+
<syntaxhighlight lang="bash">git branch</syntaxhighlight>
+
 
+
* To see local and remote branches:
+
 
+
<syntaxhighlight lang="bash">git branch -a</syntaxhighlight>
+
 
+
* To have a detailed view of local and remote branches:
+
 
+
<syntaxhighlight lang="bash">git branch -v -a</syntaxhighlight>
+
 
+
* To see the changes you've made on the branch before you move them to the staging area:
+
 
+
<syntaxhighlight lang="bash">git diff</syntaxhighlight>
+
 
+
* To see the changes you've made on the branch before a commit:
+
 
+
<syntaxhighlight lang="bash">git diff --cached</syntaxhighlight>
+
 
+
* To see the list of files you've added, removed, modified on the branch before a commit:
+
 
+
<syntaxhighlight lang="bash">git status -s</syntaxhighlight>
+
 
+
* To see a tree-like view of commits in develop:
+
 
+
<syntaxhighlight lang="bash">git log --graph --oneline --all</syntaxhighlight>
+
 
+
* To see your last commit on a branch (before it's been merged):
+
 
+
<syntaxhighlight lang="bash">git show</syntaxhighlight>
+
 
+
* To see commit logs:
+
 
+
<syntaxhighlight lang="bash">git log</syntaxhighlight>
+
 
+
You can see them one at a time using:
+
 
+
<syntaxhighlight lang="bash">git log -1</syntaxhighlight>
+
<syntaxhighlight lang="bash">git log -2</syntaxhighlight>
+
 
+
and so on.
+
 
+
 
+
== How to stash your changes ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
If you have work you haven't committed yet and you want to work on another bug or update your 'master' and 'develop' branches you need to stash your work first. It's generally good practice to do this every time you have work you haven't committed.
+
 
+
* Make sure you're on the right branch using the <code>checkout</code> command.
+
 
+
* Put away your work using the <code>stash</code> command:
+
 
+
<syntaxhighlight lang="bash">git stash</syntaxhighlight>
+
 
+
* And bring it back with:
+
 
+
<syntaxhighlight lang="bash">git stash pop</syntaxhighlight>
+
 
+
* To see the work you've stashed, you can use:
+
 
+
<syntaxhighlight lang="bash">git stash show</syntaxhighlight>
+
 
+
 
+
== How to undo changes ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
* If you added a file using <code>git add</code> but finally want to unstage it (i.e. remove it from the staging area before you do <code>git commit</code>), you can use the <code>reset</code> command:
+
 
+
<syntaxhighlight lang="bash">git reset HEAD FILENAME</syntaxhighlight>
+
 
+
: Note that the file is still modified; it's just no longer part of your staging area and won't be part of your commit.
+
 
+
* If you want to undo the changes you've made to a file before you commit it, you need to use <code>checkout</code>:
+
 
+
<syntaxhighlight lang="bash">git checkout -- FILENAME</syntaxhighlight>
+
 
+
* You can also reset everything to the last commit using <code>--hard</code>:
+
 
+
<syntaxhighlight lang="bash">git reset --hard</syntaxhighlight>
+
 
+
* If you've already committed your work and want to go back to a clean slate, you can go one commit back using:
+
 
+
<syntaxhighlight lang="bash">git reset --hard HEAD~1</syntaxhighlight>
+
 
+
 
+
== How to move files ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
Use the <code>mv</code> command:
+
 
+
<syntaxhighlight lang="bash">git mv OLDPATH NEWPATH</syntaxhighlight>
+
 
+
 
+
== How to delete files ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
Use the <code>rm</code> command:
+
 
+
<syntaxhighlight lang="bash">git rm FILEPATH</syntaxhighlight>
+
 
+
 
+
== How to delete branches ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
* Once your work on a bug is done and your branch has been merged into develop you can delete your local branch:
+
 
+
<syntaxhighlight lang="bash">git branch -d BRANCHNAME</syntaxhighlight>
+
 
+
: You can also use this to delete a local branch you've created by mistake.
+
 
+
* If your whole branch hasn't been merged, you must use this instead:
+
 
+
<syntaxhighlight lang="bash">git branch -D BRANCHNAME</syntaxhighlight>
+
 
+
* You can then delete your remote branch as well:
+
 
+
<syntaxhighlight lang="bash">git push origin :BRANCHNAME</syntaxhighlight>
+
 
+
: If your branch has been fully merged you can also do this directly on GitHub. Just click on the pull request (from the Activity list on your profile for example), scroll down and it'll ask if you want to delete the branch.
+
 
+
 
+
== How to rename branches ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
If you've made a mistake and want to rename a local branch, you can use:
+
 
+
<syntaxhighlight lang="bash">git branch -m OLDNAME NEWNAME</syntaxhighlight>
+
 
+
: N.B. This will work even if you've committed and pushed some changes already. However, if you have, it will not rename the branch on your GitHub fork but create a new identical one. You will need to delete the old branch on GitHub.
+
 
+
 
+
== How to update your branch ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
* If, for some reason, you'd like to update your branch so it has all the new code which has been added to develop since then, you can do so with <code>rebase</code>. However, this will only work smoothly if you have nothing on your branch of if what you have has been committed and won't conflict with the new additions. If that's the case then run:
+
 
+
<syntaxhighlight lang="bash">git checkout BRANCHNAME
+
git rebase develop</syntaxhighlight>
+
 
+
Ta-da! All new!
+
 
+
* If you had already pushed some changes to GitHub, you will need to force a push to get it updated:
+
 
+
<syntaxhighlight lang="bash">git push -f origin BRANCHNAME</syntaxhighlight>
+
 
+
 
+
== How to squash several commits into one ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
If, for some reason, you'd like several commits to be just one, you can squash them. This is not reversible so proceed with caution.
+
 
+
# Make sure everything is up-to-date.
+
# Make sure you're on the correct bug branch using <code>git checkout</code>.
+
# Use <code>git log</code> or <code>git log -n</code> to check the ID of the commits you want to squash. It might come in handy later.
+
# Load the interactive rebase interface using <syntaxhighlight lang="bash">git rebase -i develop</syntaxhighlight>
+
# The interface will show you all the successive commits on this branch, from the oldest at the top to the most recent at the bottom.
+
# Edit the work 'pick' to the word 'squash' for the ones you want to squash into the previous commit. This is where the commit IDs can be useful as the commit message is shortened and it may not be easy to say which is what. Each line shows the first seven characters of the commit ID.
+
# When you're done hit Ctrl+X then type Y and Enter.
+
# You'll be then shown the commit messages if you want to edit or remove them. When you're done hit Ctrl+X, Y and Enter again.
+
# Ta-da!
+
# Note that if you had already pushed some changes to GitHub, you will need to force a push to get it updated:
+
 
+
<syntaxhighlight lang="bash">git push -f origin BRANCHNAME</syntaxhighlight>
+
 
+
 
+
== How to enable beta features on your Dreamhack ==
+
 
+
<strong>--> in WinSCP</strong>
+
 
+
Open <code>~/dw/ext/local/etc/config-local.pl</code> then scroll down to the bottom of the file. Before the closing curly bracket, add this:
+
 
+
    <syntaxhighlight lang="perl">%LJ::BETA_FEATURES = (
+
        "FEATURE1" => {
+
            start_time  => 0,
+
            end_time    => "Inf",
+
        },
+
        "FEATURE2" => {
+
            start_time => 0,
+
            end_time => "Inf",
+
        },
+
    );</syntaxhighlight>
+
 
+
Edit FEATURE1 and FEATURE2 to the actual names of the beta features then turn them on by going to the beta page on your hack (http://www.USERNAME.hack.dreamwidth.net/betafeatures). If you don't know the actual feature names, ask about them at <dwcomm>dw_dev_training</dwcomm>.
+
 
+
 
+
== How to enable CAPTCHAs on your Dreamhack ==
+
 
+
<strong>--> in WinSCP</strong>
+
 
+
* Open <code>~/dw/ext/local/etc/config-local.pl</code> and make sure you have the following code:
+
 
+
    <syntaxhighlight lang="perl">    # setup recaptcha
+
    %RECAPTCHA = (
+
            public_key  => $DW::PRIVATE::RECAPTCHA{public_key},
+
            private_key => $DW::PRIVATE::RECAPTCHA{private_key},
+
    );
+
 
+
    # setup textcaptcha
+
    %TEXTCAPTCHA = (
+
            api_key => $DW::PRIVATE::TEXTCAPTCHA{api_key},
+
    );</syntaxhighlight>
+
 
+
* Open <code>~/dw/ext/local/etc/config-private.pl</code> and make sure you have the following code:
+
 
+
    %RECAPTCHA = (
+
        public_key  => "key",
+
        private_key => "key",
+
    );
+
 
+
    %TEXTCAPTCHA = (
+
        api_key => "demo",
+
        timeout => 10,
+
    );
+
 
+
* Go to [http://textcaptcha.com/ textCAPTCHA.com] and [http://www.google.com/recaptcha reCAPTCHA] to obtain keys and edit the code to add them.
+
: The 'demo' key works for testing purposes.
+
 
+
* Edit CAPTCHA settings as you desire at <code>~/dw/ext/local/etc/config.pl</code>.
+
 
+
 
+
== How to push changes on the release branch ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
If you need to make fixes after a code push, first create a copy of the release branch. Like so:
+
 
+
<syntaxhighlight lang="bash">git checkout -b release-X.X dreamwidth/release-X.X</syntaxhighlight>
+
 
+
:X-X is the number given to the release on the GitHub repo branch. Make sure it matches.
+
 
+
Then follow the usual steps (edit, add, commit, push) and when you request your changes to be pulled on GitHub make sure to select the release branch as your base branch and your head branch.
+
 
+
 
+
= Help! Troubleshooting tips =
+
 
+
== My branch has commits from another user! ==
+
 
+
<strong>--> in PuTTY</strong>
+
 
+
If you realize once you've pushed your branch to github.com that you built it upon another pull request that has been merged since then and that your branch now has commits from another user, don't panic. If these commits don't affect yours, you can easily rebase your branch against develop as explained in [[#How_to_update_your_branch|this how to]]. The system will see that some of the commits on your branch have already been merged into develop and will skip them, thus leaving only your own unmerged commits on your branch. There, all clean! All you have to do is push your branch again.
+
 
+
 
+
== Issues with text strings ==
+
 
+
* As <dwuser>denise</dwuser> explained [http://dw-dev-training.dreamwidth.org/13233.html here], you need to delete old text strings and create new ones when you edit .text files or en.dat instead of simply editing the text. If the change isn't critical - the string doesn't need to be renamed or the text change is minor - it's better to notify the site copy team so that text can be changed locally and the original file left alone.
+
 
+
* If text you've modified doesn't appear on the site after a code push, append <code>?uselang=debug</code> to the page URL to make sure it's using the right string. If it is and it still doesn't display after a while, comment on <dwcomm>dw_maintenance</dwcomm>.
+
 
+
 
+
== Starting over ==
+
 
+
If something's wrong you can:
+
* delete your GitHub repositories on github.com: go to your repository, click on Admin then scroll down to 'Delete this repository'.
+
* then [[Moving_your_Dreamwidth_installation_to_use_Github#Stop_the_server_and_all_workers | go through these steps again]].
+
 
+
If something's *really* wrong you can also [[Dreamhack_Troubleshooting#I_want_to_wipe_my_install_and_start_over|rebuild you Dreamhack completely and start over from scratch]].
+
 
+
 
+
= References =
+
 
+
* [[Moving_your_Dreamwidth_installation_to_use_Github|Moving to GitHub]]
+
* [[Dev_Maintenance|Development Maintenance]]
+
* [[Draft:_Github_development_process|Github Development Process]]
+
* [http://ss64.com/bash/ Bash commands]
+
* [[Git_Getting_Started|Git: Getting Started]]
+
* [http://rogerdudler.github.com/git-guide/index.html Git - The Simple Guide]
+
* [http://git-scm.com/documentation Pro Git]
+
* [http://git-scm.com/book/commands Pro Git - Index of Commands]
+
* [http://git-scm.com/docs Pro Git - Reference]
+
 
+
[[Category:Development]]
+
[[Category:Getting Started]]
+
[[Category:Git]]
+

Latest revision as of 16:20, 13 March 2013