I love you, INDEX
Okay, there wasn’t a blog entry on git for quite a while, but well, here it is. This time about the incredible INDEX mechanism and git add -i. Read the rest of this entry »
Okay, there wasn’t a blog entry on git for quite a while, but well, here it is. This time about the incredible INDEX mechanism and git add -i. Read the rest of this entry »
A lot has changed since the latest announcement on the blog. We brought up the major release v0.1.0 that brings gc-utils into production status. Since 0.1.0 gc-utils now uses an own remote branch to pull things into before rebasing the CVS changes on top of the master branch. Additionally we cleaned up some smaller notifications. v0.2.0 was pretty much done by Jan Günter, who restructured the sources and cleanup the makefile so that we get a much nicer generation of files. Additionally Ping Yin, who is currently working heavily on git and tools around git fixed a issue with cvsps that might occur in particular environments. Finally we prepared gc-utils to be able to detect a brighter range of git versions to verify if gc-utils can be used with those git versions.
Let’s do it the git way and just provide the diffstats between v0.4.0 and v0.2.0:
David Soria Parra (32):
Add a “Update…” message to gc-update.sh
Check if the a .cvs directory is present.
Fix the check for the .cvs directory.
Aggregate duplicated code into on library file.
Add license header
Test to invoke gc-utils from subdirectories
Testcase for gc-commit
Import branches into refs/remotes/cvs/* by default
When running cvsclean, gc-commit didn’t return to the working directory
Check if the directory to import already exists.
Change required git version from 1.5.0 to 1.5.4
Tests: Test merge strategy option in gc-update
Tests: Display filename when a test fails
Tests: Silence cleanup script
gc-utils version 0.0.5beta1
Add UPDATE-NOTES containing informations about compatiblity breaks
Silence git-stash when gc-update is not in verbose mode
Pop stashed status always, not only when we rebase
Fix the check for the .git and .cvs directory
Cleanup manpages
Use die shortcut instead of echo >&2 && exit 127
Show a message that we run cvs update
Silence errors due to non integer inputs in our select
Simplify code
gc-utils version 0.1.0
Let install(1) create our directories
Change required git version from 1.5.4 to 1.5.3
Fix the check for git versions
Tests: Wait a second before recommiting a change
Merge branch ‘maint’
Merge branch ‘master’ into next
gc-utils version 0.2.0 the ‘yellow t-shirt’ releaseEduardo Cardoso (2):
Uses –no-pager to retrieve log messages.
Added flags to `cvs update’ to allow creation of directories and pruning of empty directories.Jan Günter (7):
Added .gitignore file
manpage syntx correction
Removed the manpage numbers from gc-utils commands output
Update mandb after installing manpages
Suppress sed commands in Makefile output
Restructuring project files
Code cleanupPing Yin (1):
Sometimes “cvsps –cvs-direct” may not work, so use -gn to allow.gitignore | 8 ++
ChangeLog | 107 ++++++++++++++++++++++
Makefile | 69 +++++———-
UPDATE-NOTES | 10 ++
doc/.gitignore | 9 ++
doc/Makefile | 46 ++++++++++
doc/gc-commit.1 | 46 ++++++++++
doc/gc-import.1 | 63 +++++++++++++
doc/gc-multi-commit.1 | 29 ++++++
doc/gc-update.1 | 54 +++++++++++
gc-utils.1 => doc/gc-utils.1 | 26 +++—
gc-commit.1 | 45 ———
gc-import.1 | 56 ————
gc-multi-commit.1 | 29 ——
gc-multi-commit.sh | 182 ————————————–
gc-update.1 | 54 ———–
gc-update.sh | 158 ———————————
src/.gitignore | 9 ++
src/Makefile | 63 +++++++++++++
gc-commit.sh => src/gc-commit.sh | 68 ++++———–
gc-import.sh => src/gc-import.sh | 84 +++++++———–
src/gc-multi-commit.sh | 147 ++++++++++++++++++++++++++++++
src/gc-sh-setup.sh | 44 +++++++++
src/gc-update.sh | 138 +++++++++++++++++++++++++++++
gc-utils.sh => src/gc-utils.sh | 54 +++——–
tests/depth.sh | 29 ++++++
tests/gc-commit.sh | 21 +++++
tests/gc-import-r.sh | 29 ++++++
tests/gc-import.sh | 4 +-
tests/gc-update.sh | 17 +++-
tests/setup.sh | 2 +-
tests/tests.sh | 4 +-
32 files changed, 968 insertions(+), 736 deletions(-)
create mode 100644 .gitignore
create mode 100644 UPDATE-NOTES
create mode 100644 doc/.gitignore
create mode 100644 doc/Makefile
create mode 100644 doc/gc-commit.1
create mode 100644 doc/gc-import.1
create mode 100644 doc/gc-multi-commit.1
create mode 100644 doc/gc-update.1
rename gc-utils.1 => doc/gc-utils.1 (66%)
delete mode 100644 gc-commit.1
delete mode 100644 gc-import.1
delete mode 100644 gc-multi-commit.1
delete mode 100755 gc-multi-commit.sh
delete mode 100644 gc-update.1
delete mode 100644 gc-update.sh
create mode 100644 src/.gitignore
create mode 100644 src/Makefile
rename gc-commit.sh => src/gc-commit.sh (57%)
rename gc-import.sh => src/gc-import.sh (54%)
create mode 100644 src/gc-multi-commit.sh
create mode 100644 src/gc-sh-setup.sh
create mode 100644 src/gc-update.sh
rename gc-utils.sh => src/gc-utils.sh (53%)
create mode 100644 tests/depth.sh
create mode 100644 tests/gc-commit.sh
create mode 100644 tests/gc-import-r.sh
gc-utils is a small set of bash scripts that wrap git-cvsimport(1) to make importing cvs repositories and exporting commits back into cvs easier. It is licensed under the terms of the MIT/2-Clause BSD license. gc-utils is available at http://git.experimentalworks.net
I recently stumbled over a nice code snippet for my .zshrc which shows the current branch in a git repository on the right prompt:
git_prompt_info() {
ref=$(git-symbolic-ref HEAD 2> /dev/null) || echo “”
echo ” (${ref#refs/heads/})”
}setopt prompt_subst
RPROMPT=’$(git_prompt_info)’
Have you ever asked yourself how you can give PHP something back? Well for sure you can just start coding and help to improve PHP by doing bugfixes, or implementing new extensions. Maybe you don’t know C much, or maybe you don’t know how to start. So here is a great way to help the PHP project, get into contact with core developers who are willing to give you a short introduction into the PHP C code: The TestFest.
The TestFest, as announced by PHP.net, aims to improve the test coverage of PHP, by trying to get various user groups together in their city and hack on PHP tests, while having fun meeting each other. So if you are located in Munich or near Munich, just drop Johannes or Pierre a short mail that you are willing to attend this great event. There will be beer, fun and a lot of nice people testing and improving PHP. For sure I’ll attend the event too.
Hope to see you there.
Unser aktuelles Projekt wird agil entwickelt. Wir sind so agil, dass wir unsere Specs bekommen, wenn wir den Code schon committen haben. Gleichzeitig müssen wir auch noch refactoren, damit die Specs mit dem alten Code können. Macht ja nichts. Nur dumm, dass wir refactoren, fixen und releasen gleichzeitig müssen. Natürlich haben wir dabei auch interne Abhängigkeiten. Unsere Kollegen von “The Java Company“, brauchen dann unsere fertigen Pakete. Dank Buzzwordpolitik und immer mehr Agilität, müssen Releases dann auch gleich geliefert werden, ohne Vorlauf oder Feature Freeze.
Na dadurch kommt es natürlich, dass wir branchen, mergen, branchen, mergen und hoffen das wir keine Abhängigkeit vergessen haben. Aber nebenbei braucht unser Rosenheimcop noch die Refactoring Änderungen, dummerweise aber gleichzeitig auch den alten Code. Also patch und diff ausgepackt und von Branch zu Branch geschoben und commited.
Nein mal im Ernst. Endlich mal ein Fall bei dem dezentrale Systeme Sinn machen und deutlich weniger Schmerzen bereiten. Jeder Entwickler kann selbst bestimmen welche Abhängigkeiten er hat und wie er sie auflöst, indem er von jemand anderes pulled. Wenn ein Paket released werden muss, dann gibt es auch keine Commit-Stops mehr oder keine Verschieben weil die Tests nicht laufen. Dann fliegt das Feature raus. Da man sich aussuchen kann von welchen Entwicklern man die Features übernimmt, und diese auch selbst entscheiden können, welche Features es in den Hauptzweig schaffen, ist man einfach flexibler und schneller. Da kann man nur Looser und unseren Italiener mit nerven. Immer mit der Nadel durch’s Chitin. Agil und DVCS passen irgendwie.
Besser mal wieder die Robe ablegen und im Geheimen infiltrieren.
Das Haar in der Suppe ist oftmals der Doppelklick weniger, der gute Software von schlechter unterscheidet.
For quiet some while, I play around with distributed version control systems. Particularly GIT. To think outside of the box I, sometimes try out mercurial. Mercurial works like a charm, only the lack of using a pager to display logs or other long output annoyed me. For sure I could define an alias or always pipe the output to a pager, but I looked for a “out-of-the-box” solution, like GIT provides one.
To make a long story short, the latest changesets on mercurial added a pager extension. To enable the pager, just add the following lines to your local .hg/hgrc or to your global .hgrc:
[extensions]
hgext.pager =
By default, the pager extension uses the environment variable $PAGER.
As mercurial want to be more platform independent than GIT, the developers care about not doing too much platform-dependend stuff. Therefore, if you use less(1) as a default pager, the pager will popup always, even for a oneliner. GIT avoids this by defining special less environment variables, which are to specific to be included into mercurial. To fix that behaviour yourself either define the environment variable LESS=’FSRX’ in your .bashrc or override the pager used by mercurial using the folliwng line in your .hgrc:
[pager]
application = LESS=’FSRX’ less
The pager extensions tries to do exactly the same as if the output would be piped on the bash. Therefore you might notice BROKEN PIPE errors, when you quit the pager before mercurial finished to write all the output. If you get annoyed by that error, use the quiet variable to silence it. It is not enabled by default.
[pager]
quiet = True
Browsing long changesets is now joy.
Today I released version 0.0.4 of gc-utils. The new version includes various smaller fixes and code cleanup as well as a small test suite. In addition to that, I added the gc-utils(1) command, which is a wrapper around the gc-import(1), gc-update(1), etc scripts.
# gc-update -v
or …
# gc-utils update -v
Typing just gc-utils will show you all available gc-utils commands:
# gc-utils
gc-utils: 0.0.4
available commands
commit (1) – Apply a git commit to a cvs repository
import (1) – Structured import of a CVS repository into GIT
multi-commit (1) – Menu driven commits, diffs and logs between CVS and GIT repositories
update (1) – Update a GIT repository that was imported with gc-import
Also the manpages have a shortcut now:
# gc-utils help import
… manpage for gc-import
The most important change is that gc-utils now stashes your local changes before continueing the update process and rebases the cvs origin on top of your master branch instead of merging it, as merging might result in duplicated commits due to changing authors and timestamps.
Here is a shorted of changes:
gc-utils is a small set of bash scripts that wrap git-cvsimport(1) to make importing cvs repositories and exporting commits back into cvs easier. It is licensed under the terms of the MIT/2-Clause BSD license. gc-utils is available at http://git.experimentalworks.net
I usually want to have my disks encrypted. As all my storage servers run on recent FreeBSDs I usually use GEOM ELI, also known as GELI, to encrypt the disks. Geli is pretty straight forward, runs out of the box on FreeBSD and is easy to set up. So when updating my storage by buying two 500GB disks, I wanted to checkout the ZFS implementation on FreeBSD which is available, but still experimental, on FreeBSD 7.0.
What is ZFS?
ZFS is more than just a filesystem. While usually volume manager and filesystems are separated, Sun’s ZFS combines both. It gives you one command to do both, setting up RAID configuration, setting mountpoints and creating filesystems. In addition to that it can address uo 16 Exbibytes. What makes ZFS sexy is that it gives you a very powerful but easy way to set up RAID-0, RAID-1 or RAID-5 (in fact RAID-Z) with just one command. You can also export and import filesystems and creating snapshots, and just move the complete filesystem to another location. Just take a look at the various ZFS related sites about the featureset. Read the rest of this entry »
Well usually people can deal with windows. It’s not that bad. It’s a good working operating system and people can deal with that. In fact I never thought this happens, but then I had to debug an PHP written application on windows. I was not able to do anything. No grep, no tail (okay I know type and I know find, and that helped me a little bit) and no real bash. Moreover a german keyboard. I never thought this will happen, but for me, that’s hell on earth. I hope someone can help me, it’s the first time I realized, maybe all those people saying I’m kind of nerdy are right. Let’s hope there is help. I have to install windows, and I never thought I need to say this. I have to learn windows, because I’m not anymore familiar with it.