Daniel Friesen wrote:
> ((And before anyone says anything, there's no way I'm putting private 
> keys on servers operated by a 3rd party, or doing development of things 
> on my local machine -- reconfiguring apache and trying to get packaged 
> apache and mysql to NOT start up on my laptop except when wanted is a pain))
On which OS?

> In svn this is a workflow like so:
> server$ # Edit some code
> server$ svn up # make sure things are up to date
> desktop$ svn up # make sure things are up to date
> desktop$ svn diff | pager # look at the changes that will be pulled
> desktop$ ssh server "cd /path/to/code; svn diff" | patch -p0 # abuse 
> ssh, svn diff, and patch to pipe changes to the local copy
> desktop$ scp server:/path/to/code/newfile . # if I added a new file, I 
> need to randomly copy it
> desktop$ svn diff | pager # take a look at the changes to double check 
> everything is in place
> desktop$ svn revert [...] # I often work with a dirty working copy with 
> multiple projects mixed together, so I have to revert some unrelated 
> changes or manually list files in svn commit
> desktop$ # sometimes those changes have two different projects in one 
> file and I have to commit only part of it
> desktop$ svn diff somefile.php > tmp.patch # I found the easiest fix is 
> putting the changes into a patch
> desktop$ svn revert somefile.php # erasing all local changes in the file
> desktop$ nano tmp.patch # editing out the unrelated code changes from 
> the patchfile
> desktop$ patch -p0 < tmp.patch # and re-applying the changes
> desktop$ rm tmp.patch
> desktop$ svn commit [...] # And finally I can commit
> server$ svn up # update the server, things get /fun/ if you try to pull 
> patches a second time
> 
> ;) guess what, this is an explanation for half the reason why I commit 
> small changes to svn without testing them.

Seems easier to keep home at the same version as the server, rsync from
server to home, and then update before committing.




> Here's another good case for extension-as-repository.
> 
(...)
> Extensions are as much used as-is in both trunk and stable. In other 
> words, we use and develop the same version of an extension whether the 
> phase3 around it is trunk or something like REL1_16. However we do not 
> always develop every extension at once. If every extension is in the 
> same repo we are forced to checkout every extension (...) and all
> of those extensions MUST be of the same branch.
> This means that if you have a REL1_15 phase3, and you want to use some 
> extensions that try to be backwards compatible and others which have a 
> trunk that breaks you are forced to use branched extensions for EVERY 
> extension, and you forgo the features of the extensions that DO try to 
> be compatible (I DO use both branched and trunk extensions on stable 
> non-development). This is even worse when developing. If you are trying 
> to develop extension compatibility for an old release everything MUST be 
> trunk since you can't really develop in the release branch. As a result 
> any other extension you are using that doesn't have 1.15 compatibility 
> will end up causing unrelated fatal errors hampering your compatibility 
> testing.

Good point.



_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to