The detailed behaviour of both the Force IDE and the Ant migration tools is defined by the content of the package.xml file. This is updated by the "Add/Remove Metadata Components" wizard of the Force IDE and can also be manually edited. The best reference information about package.xml is contained in the Metadata API Developer’s Guide. Note that very occasionally you will find a component that the API does not support and such configuration has to be tracked and applied manually.
We make manual changes to this file and and transfer from org to Eclipse project and vice versa using the Force IDE. We checkin to SVN using Eclipse. To make sure the components are consistent, we use Jenkins (a continuous integration product) to automatically deploy what is in SVN to a separate org and run all the tests using the Ant migration tools. We typically deploy to production orgs using the Ant migration tools (and also managed packages).
Profiles are very much change hotspots and are automatically filtered by package.xml. If your profiles are referencing components from multiple namespaces it is hard to get a complete profile; we had to write our own tooling to accomplish that.
With package.xml you have to opt-in to get components transferred. Sometimes this is best done with wildcards and in other cases by explicit naming. (It can sometimes be difficult to work out the correct name to use.)
Below is a cut-down example of a package.xml for a project that has many different types of components:
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>*</members>
<name>ApexClass</name>
</types>
<types>
<members>*</members>
<name>ApexComponent</name>
</types>
<types>
<members>*</members>
<name>ApexPage</name>
</types>
<types>
<members>*</members>
<name>ApexTrigger</name>
</types>
<types>
<members>*</members>
<name>CustomApplication</name>
</types>
<types>
<members>Activity.Closed__c</members>
<name>CustomField</name>
</types>
<types>
<members>*</members>
<members>Account</members>
<name>CustomObject</name>
</types>
<types>
<members>*</members>
<name>CustomPageWebLink</name>
</types>
<types>
<members>*</members>
<name>CustomTab</name>
</types>
<types>
<members>Images/Logo.png</members>
<name>Document</name>
</types>
<types>
<members>EmailTemplates</members>
<members>EmailTemplates/InquiryPortal</members>
<name>EmailTemplate</name>
</types>
<types>
<members>*</members>
<name>HomePageComponent</name>
</types>
<types>
<members>*</members>
<name>HomePageLayout</name>
</types>
<types>
<members>Account-Account Layout</members>
<name>Layout</name>
</types>
<types>
<members>Analyst</members>
<name>Profile</name>
</types>
<types>
<members>ExtraReports</members>
<members>ExtraReports/AnyOccupation</members>
<name>Report</name>
</types>
<types>
<members>*</members>
<name>ReportType</name>
</types>
<types>
<members>*</members>
<name>StaticResource</name>
</types>
<types>
<members>Contact.SelectTitle</members>
<name>WebLink</name>
</types>
<version>28.0</version>
</Package>