There are many occasions that unfortunately require me to manually merge in code changes from various sources and various types of files so that I can then commit them to a source repository. The sources could be a set of production servers, testing servers, development servers, files that were zipped and emailed to me, etc.
These sources may have files that need to be merged into my working copy and committed to a repository. Why developers would make source code changes directly on a production server scares me; however, there are developers that do this, and I have to plan for it and take corrective actions to ensure these changes are captured.
Ideally I would like to find a piece of software that at minimum provides the following features:
- Ability to set a local working copy as the 'recipient' of file changes, ideally this set of files should be a checked out copy of code from a source repository using GIT or SVN,
- Ability to specify lists of files or folders that are mapped to their respective locations on other servers or folders on a local machine to be compared when the user chooses to merge in changes, if any are found,
- Ability to compare the files or folders specified in #2 above and show which files or folders differ. The ability to enable or disable white space for files changes would be helpful as well,
- Ability to connect to remote servers via FTP or SFTP,
- Provide a rich IDE for source code files (ie. Javascript, PHP, HTML, CSS, etc.),
- Syntax Coloring,
- Code hinting,
- Code reformatting,
- Syntax checking,
- Ability to store global and 'project' level settings so that they can be remembered for future sessions,
- Ability to interface with SVN or GIT and perform many of the basic repository functionality afforded by said repositories in order to capture changes that were merged in from the various sources that were analyzed,
- I prefer OS X as that is my primary development platform however I welcome any response for Windows and OS X alike.