The victim, whom police did not identify, said two men approached him at about 5 a.m. They demanded money and held a knife against his side, said Sgt. Andrew Urton.
The victim grabbed the knife, cutting his hand, then gave the men several items and ran to Petaluma Valley Hospital, Urton said.
He identified one of the suspects as Byron Trower, a 49-year-old homeless man, whom he had known several years before.
Petaluma police arrested Trower later Sunday morning at the Town and Country Shopping Center.
Trower is expected in court Tuesday afternoon and is being held on $30,000 bail.
A second suspect remains at large, authorities said.